The American Dream Realized: NYC-based Java Consultant. Author of Play Framework Mods Elastic Search, RabbitMQ. JavaLobby Featured MVB Writer. I blog at http://geeks.aretotally.in and tweet at http://twitter.com/_felipera. Felipe is a DZone MVB and is not an employee of DZone and has posted 13 posts at DZone. View Full User Profile

Java Kicks Rails Butt? Are Java developers everything that's wrong about Java?

02.11.2011
| 14422 views |
  • submit to reddit
I was reading an interesting comparison between Java as a platform for Web Development and Rails. The author claims Java developers are what's wrong about Java. In his view Java is a elegant language and since the developers never looked for productivity hence it was never found.

That's an oversimplification obviously but he does have a point. Who doesn't remember the first versions of EJB? Java developers have a tendency to over-engineer applications, I remember 10 years ago I was doing a small Astrology site for someone using JBoss 2 and EJB. I had DTOs, I had remote calls, I had Sessions Beans for business logic, I had Entity Beans (CMP, BMP) for the data access layer, and of course interfaces for everything. What a waste! I am glad I learned my lesson.

The author of the article missed an important trying to separate the language itself from the culture of its community, which is a huge part of any platform and it should be considered when analyzing or comparing different platforms. Is that the "social" aspect of a programming language or platform? I guess so (although I feel a total cliche saying it). When Java became popular we used to worry about Web Scalability deeply, layers and layers of caching, data replication, etc. Why did we do that? Because we had to! We didn't have clusters and clusters of servers, we didn't have auto-scaling Clouds.

Is that something the guys from Rails for example are missing? Is that why Node.js is becoming so popular? I guess like everything in life the answer is, it depends. It depends the size, the audience, the type of application and so many other factors involved.

Originally posted on http://geeks.aretotally.in/
Published at DZone with permission of Felipe Oliveira, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags:

Comments

Andy Leung replied on Fri, 2011/02/11 - 3:53pm

I actually think the other way around. First 2 generations of EJB were giving us good lessons on architectural and system design. At that time, there were NOTHING comparable in the industry. .NET was not even on par with PHP (and now it is on par with PHP). So it was actually good. Besides, if I was given only Servlet with whole EJB thing, I probably developed everything as objects and had them heavily running in a web container, which was a bad thing. I still think that having EJB as middleware is a good idea, it's just that it should be more lightweight, and EJB 3.1 is a very good start.

Reza Rahman replied on Fri, 2011/02/11 - 5:01pm

I agree. I think Java developers should stay away from too much navel-gazing. Its true systems can be over-engineered, but there is something to be said for not sacrificing maintainability in the blind pursuit for productivity. After all, not every Java shop is a startup where short-time time-to-market concerns are all that matters. In fact, I'd contend few Java shops are startups.

Cheers,
Reza

Felipe Oliveira replied on Fri, 2011/02/11 - 5:48pm in response to: Andy Leung

I agree it taughts us good design patterns, I also think it taught us when to use them. Most webapps do not require a service layer, data layer, value object, factory, data transfer object and so forth. I also agree EJB 3 is a much better start that is why I wonder if Rails, Node.js, PHP and others are trying to make it too simple. I believe it falls somewhere in the middle. Thank you so much for your comment, it is a honor for me.

Felipe Oliveira replied on Fri, 2011/02/11 - 6:19pm in response to: Reza Rahman

Hi Reza, I agree a lot of Java shops are not startups but why not? I love Java but it is hard not to feel enchanted by technologies like Rails or my latest passion, Node.js. Java could easily fulfill startups needs, a little change of mentality might be needed. I believe in our community, look at the great Play framework for example. And we can always rely on Solr, Lucene, Quartz, Spring, Rabbit and so many other great projects, so great they are widely used on other platforms. Heroku offers a Solr add-on for example, Rabbit is very popular on the Rails community for example. Thank you so much for your comment, @_felipera

Reza Rahman replied on Fri, 2011/02/11 - 7:54pm in response to: Felipe Oliveira

From what I have observed, it's mostly about perceptions than reality. Java == (old + boring), anything else == (new + exciting) :-).

Another factor is that Java EE technolgies like JSF 2/CDI/EJB3/JPA 2 is more abstract than for example hacking straight PHP that requires very little up-front learning. Now, that's only partially a factor because after all, things like Rails and Grails have a pretty high abstraction level too. In reality, something like a Java EE 6/Seam 3 stack is comparatively quite agile/beginner-friendly especially with something like Forge: http://seamframework.org/Documentation/SeamForge.

The real problem though is that most developers that opt to work in small start-ups (the basement company, recent grad stereotype if you will) would probably resent the architect for choosing Java because he/she somehow "deprived" them from using the "kewl" technology that they would rather be working with, regardless of what the actual long and short term technical merit actually is :-).

It also doesn't help that Java developers never really seem to firmly stand up against the "Java is dead" tripe that's infested the industry for so long. Maybe blogs like yours' help matters ;-). 

Cheers,

Reza

Felipe Oliveira replied on Sat, 2011/02/12 - 1:05am in response to: Reza Rahman

Great point about perception and even though I have my concerns over it, perception does count for a lot of people. Especially upon developers that are not experienced enough to understand all the factors involved in making such decisions. But that does not happen only with Java, I wrote about a similar situation involving the "old" SVN and the "new" Github. I love both by the way. Look at Facebook for example, do you really think they were that innovative? Innovative enough to propel this insanity, a maket value of 80 billion dollars?

Zack Preble replied on Sat, 2011/02/12 - 9:05am

Felipe,

I can assure you that those who have evolved as developers together with JAVA as a platform will agree with you 100%. JAVA can be as complex as you want it to be but if you know enough (and stay in touch with all the latest additions and innovations) it can be as fast, streamlined, and efficient - as much as any other technology. Newcomers will disagree...

Sura Sos replied on Sun, 2011/02/13 - 10:13am

depends on your skill set. I have yet to see someone that is excellent .net and jee developer. Mastering a technology takes more time than learning the language syntax and core libraries.

Instant Tax Sol... replied on Thu, 2011/08/04 - 11:37am

I really don't elaborate on it but as I agree technologies like Rails are great for rapid development, I wonder if they are trying to make it too simple. -Instant Tax Solutions

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.