Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm a little new to Java Web Development. JSF, JSP, Servlets, Hibernate etc... I have really a good understanding of OOP and C++. I have years of PHP and MySQL web development experience. I also have experience with C# and ASP.NET and I'm a software engineering student.

I don't want to continue my career with PHP, since it is getting very popular, there are many people who use it and I can't really use my engineering knowledge fully with PHP. It is more basic. I need a more enterprise environment, Java EE is exactly like this.

But...

For these last weeks I was re-thinking about keeping up my progress with Java EE. I have these problems listed below, and I'd like to get your thoughts on those especially if you are an experienced Java EE developed. The most primitive question is, do they get better with getting used to Java with time, as a developer? Do you, if you are experienced in Java EE, still deal with those kinds of problems after years?

  • There's always a "version conflict" between jars needs to be solved.

  • You always get an error because of a missing or extra jar.

  • There are so many jar files... That is really overwhelming. I'm using Hibernate, JSF and CXF in Tomcat and I have 100+ jar files in WEB-INF/lib. The two problems above I listed increases with jars count.

  • Tomcat or Glassfish is not really enough for development. Especially Tomcat is worse. There are many problems. Let's say, Tomcat does not update wtpwebapps dir always. I sometimes copy-paste jars manually. Eclipse 80% of the time restarts Tomcat on saving .java files, and does not update in hot-replace mode, but sometimes do. (Yes using always in debug mode)

  • There are many implementations. That's fine but setting up one of them takes at least hours, or days. Like Web Services. Which implementation? I just got an error because the latest Axis2 doesn't support Dynamic Web Module 3.0.

  • Setting up the development environment takes hours. If I need to work on a different computer, I check out SVN repository and set up libraries in Build Path, server, and solve new dependency bugs which takes lots of time. I still have no idea how to deal with different paths of libraries on different computers (some paths are not relative like Axis2 project folder setting).

  • The logging system of Tomcat or Glassfish still look complicated to me after months. I get tired of checking Console tab of Eclipse if there's an error/exception. Even half of the exceptions don't clearly describe the problem.

  • There's no stability like Apache Web Server (or php binary in that sense) in Tomcat and Glassfish. You can very well easily crash the whole Web App Server with a tiny bug. (Even the app shouldn't get crashed. Just that request should be crashed.)

  • I've used PHP for years and no bugs affected my development or production. But with just 5-6 month with java I got a few bugs that slowed me down. Even Eclipse has critical bugs in its core features. (i.e. Android Emulator does not deploy my .apk file and I need to kill adb.exe everytime after I start the emulator. This is not exactly Java EE but a good example. There were other Java EE bugs I run across.)

  • There's always a support problem for new releases. (i. e. latest Eclipse does not support Hiberbate Tools.)

  • There are many configuration files everywhere.

  • Configuration files are really different. Even using just a logging system like log4j takes hours to understand its configuration and implementation into project system.

Those are just popped from my mind. There are of course other problems. Every language does but Java seems to me has more than others.

So, do they get better with time for me as a developer? 2-3 years later, if I continue with Java and J2EE, will I be get rid of most of those annoying things because of being more experienced?

share|improve this question

closed as not constructive by jmort253, Jarrod Roberson, jmq, gnat, Robert Harvey May 7 '12 at 19:46

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

    
My RSI is playing up, so not typing a full answer - but see Matt Raible's website for comparing web frameworks, it'll save you a lot of pain in JEE/JVM land –  Martijn Verburg May 7 '12 at 19:28
2  
This reads like a j2ee rant to me, heh. I guess, no, it doesn't get better because a lot of the things you mention I still have problems with today (and I have been working with this for a few years now). The jar file issue will probably never go away, but really that is a problem for anything that uses a 3rd party library. I didn't vote you down, but I did vote to close as not constructive (as I think a lot of the answers will just be opinion). –  jmq May 7 '12 at 19:39
    
I have been doing this for years. The more I know the more I understand how little I know. Everything gets better if you put in the work. –  CodeART May 7 '12 at 19:40
1  
I voted to close and then had second thoughts. Underneath the surface, I do feel there is a legitimate question here. Can it be reworded somehow so it comes off as less of a rant? –  jmort253 May 7 '12 at 19:42
1  
I will vote to re-open. Its not really a rant, these are problems faced by anyone and everyone trying to set up a J2EE development environment. And while there is no definitive answer to all the questions, there are definitively some answers which could usefully point someone in the right direction, and, make the whole process less painful for someone just starting with J2EE. –  James Anderson May 8 '12 at 4:36
show 3 more comments

2 Answers

I don't want to continue my career with PHP, since it is getting very popular, there are many people who use it and I can't really use my engineering knowledge fully with php. It is more basic. I need a more enterprise environment, Java EE is exactly like this.

I really feel like you answered your own question here. You say that PHP is too basic, and J2EE is very complicated. Yet you also agree that you can't "use your engineering knowledge fully with PHP."

The tradeoff for using tools that allow you to do so many more things is that there is just going to be a lot more to learn, maintain, and master.

The J2EE platform is massive, and one could theoretically spend decades trying to learn about it. There are so many different Web containers, frameworks, methodologies, and libraries that it's impossible to know everything there is to know about it. This is where developing great, problem solving skills will really pay off.

With that said, this is something that will get easier with time as you gain more experience and knowledge of the platform and simultaneously improve your problem solving skills. You'll see similarities in one framework/server or another, and you'll enhance your problem solving abilities and learn better techniques for approaching the problems you face.

As for the maintenance aspects, like setting up Tomcat (or whatever the latest container is of the day), or setting up your development environment, you will get faster at this, but it will always take time and troubleshooting to get things working and setup the way you want to.

The tradeoff for being able to develop enterprise-level applications is that there will be more complexity, and this is why you see individual, small developers using PHP and why you don't typically see Java/J2EE used by freelance or individual developers.

share|improve this answer
    
That's a nice answer and encourages me, thanks jmort253. But just to clarify, I didn't mean J2EE is complicated. I mean it is difficult for me because I'm new to it and I don't know if it will still be in the future. Just for clarification, don't get me wrong :) I'm waiting for different thoughts to select the answer. –  Seregwethrin May 7 '12 at 19:45
1  
It is more complicated, and that's okay to admit. My advice is to be patient with the platform (and yourself). As I mentioned in my answer, with experience and dedication, this will get easier. –  jmort253 May 7 '12 at 19:46
add comment

In response to your points:

  1. Not for me. It probably depends on your project, and how its configured and how your workstation/dev tools are configured.
  2. Sometimes, but it's usually very easily fixed.
  3. 100+ JARs for that setup? It's possible. I currently do most of my JavaEE development in RAD which handles all those 100's of JARs pretty easily, with one or two WS Runtimes specified in the build path.
  4. Can't speak for this, most of my JavaEE has been on WebSphere. Which has its own problems, but they are all managable.
  5. Days??
  6. Hours?? Hmm I can't say I've ever had this problem. Maybe the development environments are poorly configured?
  7. Again, I have much more experience with WebSphere and this is not a major problem.
  8. Again, I have much more experience with WebSphere and this is not a major problem.
  9. Many complex development tools have bugs. Maybe when you did PHP you just got lucky and didn't hit your tool's bugs? I used to do PHP in DreamWeaver and it was usually buggy as hell (worse than most versions of Eclipse or RAD). Maybe you should switch tools, to something like NetBeans or IntelliJ.
  10. Hm I guess you could check the release notes before finding out the hard way, but yeah that can suck.
  11. Yeah, there are. I guess if every component wants its own config file and there are many components then there will be many config files.
  12. Maybe, but once you learn it, you've learnt it and you don't have to learn it again. I suppose if you only stick to the very basic features then this is a burden but when you need the advanced stuff, it's good to know it's out there.

It will probably get easier over time. On the other hand, it sounds like whatever you're working with is a lot nastier to work with than anything I ever worked with. So maybe the specific projects and tools and their respective setups are a major component of your headache. A badly configured development environment can make coding in any language pure hell. I've seen it on the .NET side too, but that was more a function of how the project was initially set up than with inherent problems with underlying technologies.

share|improve this answer
    
Thanks for your answer too. I was looking for a more abstract answer, I wasn't actually searching for answers particularly :). So you agree too that it will get easier over time. Also I'll try WebSphere, they say it is more stable. In addition, our idea is just a little application, a senior project, it shouldn't have 100+ jars i guess. If it has 100+, then I'd expect enterprise applications to have 1000+ jars. I'll of course try to build a better environment but seems like I spent months and still couldn't get an adequate environment :) –  Seregwethrin May 7 '12 at 20:22
    
And all 100+ JARs are necessary? If you remove any from the build path, can you still build OK? I've seen things left on build paths long after they're not needed. As for WebSphere, well some things are easier, but it's also a bit of a resource hog, and it has problems too, just maybe not the ones you have right now (and maybe I'm more used to them) ;) I am using it with RAD, a licensed IBM product, though I understand there's a stand-alone Community-edition version. –  FrustratedWithFormsDesigner May 7 '12 at 20:27
    
Well I'll of course try, but you see it needs to be tested to fix it one by one :) I'm just preparing the project for the presentation so nobody will care how many jars will there, in fact it is better to have more jars :-) I'll try to fix them up later when I have more free time. I'd expect jars to be shown "unused" like unused classes or variables. If we wouldn't care about usability, we all be using assembly now :-) –  Seregwethrin May 7 '12 at 20:37
    
@Seregwethrin: Have you looked into some sort of dependency-check tool that would be able to figure out which JARs don't add anything to you project? I haven't tried this myself, but for that many jars it's probably worth looking into. –  FrustratedWithFormsDesigner May 7 '12 at 20:38
    
Yep I know Maven or a similar tool is really a must. That's again on my list to try and test. My project will get more jars :-) I'm running for 200+ :-) –  Seregwethrin May 7 '12 at 20:42
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.