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.
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?