Discussions

News: It's a Great Time To Be Programming Enterprise Java

  1. You know, it’s been a bit of a disheartening few months for members of the Java community. 

    I don’t know anyone, from the members of Larry Ellison’s family, to the initial instigators of the Java programming language, that didn’t have mixed emotions about Oracle’s acquisition of Sun, which completed on January 27th of this year. And to deflate spirits even more, James Gosling abruptly departed from Sun in April, completely catching the Java community by surprise. But putting the politics, and the changing face of the industry aside, you can’t help but think that it’s a pretty darned good time to be programming in Java.

    Sure, Java7 isn’t out yet, but it will be soon, and the fact of the matter is, the Java Runtime Environment is at such an advanced state of maturity, the community really doesn’t need new releases every eighteen months. And whatever the basic Java Runtime Environment, or updated EJB specification, or whatever JSR you’re anticipating, might be lacking, there are more than enough independent and community driven projects out there filling any voids that may have been created by the slow pace of the Java Community Process (JCP).

    And speaking of independent or community driven projects, it’s nice to see that some of the biggest and most pervasive frameworks in the industry have ‘all-growed-up’ and are hitting some very interesting and exciting release milestones.

    Hibernate, the sweetheart ORM framework of the IT industry, began providing JPA 2.0 support for the first time in a GA release when version 3.5 came out at the end of March. 

    Spring, the Dependency Injection and Inversion of Control container of choice for the industry, moved to version 3.0 in December of 2009, and we’re already starting to see more and more development teams integrating the new 3.0 features into their projects.

    Plus, it’s once again fun to be fooling around with the presentation layer, as Apache’s MyFaces went GA with a release that supports the much more Ajax savvy JavaServer Faces 2.0 API. And MyFaces isn’t the only JSF 2.0 compliant implementation around, as OpenFaces went GA with JSF 2.0 support in early March; and of course, perhaps the most feature full Ajax library for JSF, JBoss’ RichFaces, recently began distributing version 4 Alpha releases, demonstrating their support of the JSF 2.0 specification.

    Mix in the fact that Seam, which is perhaps the most inventive framework for really simplifying and tying together JSF, EJB and modern Java EE development, is readying for a 3.0 GA release latter on this summer, you can’t help but admit that there are some interesting things happening on the server-side these days.

    Face it, it’s a pretty fun time to be programming Enterprise Java.

    Threaded Messages (44)

  2. You're deluding yourself. Last time spring and Hibernate where hot was in 2005.

    Jpa 2 is just about standardizing a fraction of the functionality that's been in hibernate core for ages.

    Spring for the most part has been going the way of the kiwi. It's been steadily de-evolving. Namespaces where not an improvement, neither where annotations or aspect. And osgi is massive overkill for 99% of all applications.

    Last time jsf was hot was... well never! No one i know of would willingly subject himself to jsf

    I still very much enjoy working with java, but this post is a sham and everybody knows it

  3. Oh, that's Harsh...[ Go to top ]

    Did someone just throw a wet blanket on me?

    JSF isn't without it's issues, but 2.0 has some great features, and what Seam is doing with it? Really, it's a space that is heating up.

  4. Oh, that's Harsh...[ Go to top ]

    Did someone just throw a wet blanket on me?

    JSF isn't without it's issues, but 2.0 has some great features, and what Seam is doing with it? Really, it's a space that is heating up.

    Have you ever tried Wicket?  It such a relief to be able to just write code that solves a real problem instead of spending most of my time satisfying the needs of various frameworks.

    Have you ever asked yourself why we need so many solutions for solutions for solutions in Java?  Sometimes I look at 'state of the art' Java and it's all bandages.  These systems are like one of those cartoon mummys where you pull on the cloth and when it stops spinning, there's nothing there.

  5. Oh, that's Harsh...[ Go to top ]

    re: "just write code that solves a real problem", yes, i agree

     

    you dont' have to use a framework, I find that most of them aren't worth the overhead,

    the overhead being: 1) learning curve 2) configuration mangement 3) version compatibilty headaches 4) excess complexity relative to the most common use cases 4) xml-itis

     

    that being said, there are some good frameworks and libraries, etc, but pojos rule!

    here's my philosophy:

    1) understand the requirements/problemspace

    2) design a logical solution independent of code/platform/etc

    3) write simple, atomic, lowlevel code for the most common tasks, hopefully that can be reused; this should be pojos and simple stateless services/functions

    4) validate the early code with both unit tests and workflow tests; the latter will require writing some 'harness'  or 'glue' code, which can become the basis of the overall application/solution structure

    5) if there is a framework handy that can be leveraged, ok, look at how to integrate and use the pojos; but if jumping through too many hoops for framework, fugettaboutit

    6) repeat as needed

     

    now i realize that sometimes you're dealing with legacy and/or silly managment and maybe you gotta use spring, struts, hibernate, whatever, but steps 1-4 still apply; then step 5 becomes "figure out how to integrate and use the pojos", because you have no choice

    this may require wrappers, decorators, whatever, but you're still better off, because you still have code that addresses the real domain logic

     

    now i also realize that the above is an idealized simplification, but it's gotten me through 2 decades of programming in several languages

  6. You're deluding yourself. Last time spring and Hibernate where hot was in 2005.

    Jpa 2 is just about standardizing a fraction of the functionality that's been in hibernate core for ages.

    Spring for the most part has been going the way of the kiwi. It's been steadily de-evolving. Namespaces where not an improvement, neither where annotations or aspect. And osgi is massive overkill for 99% of all applications.

    Last time jsf was hot was... well never! No one i know of would willingly subject himself to jsf

    I still very much enjoy working with java, but this post is a sham and everybody knows it

     

    Interesting, what would you class as the 'hot' technologies yourself then?

  7. You're deluding yourself. Last time spring and Hibernate where hot was in 2005.

    Hear, hear!

    Hibernate now is about as hot as liquid nitrogen. And absolutely nothing interesting happens in the core language.

    Hot technologies in Java for me right now are: QueryDSL and Guice.

  8. QueryDSL and Guice[ Go to top ]

    We've got a few articles on Guice in TheServerSide.com pipeline, so stay tuned. I'll see if I can find any JPA2.0/Hibernate 3.5 people to talk about working with QueryDSL as well.

  9. Last time jsf was hot was... well never! No one i know of would willingly subject himself to jsf

    Not true, we use JSF and we absolutely love it. Speak for your self please ;)

  10. I've recently gotten back closer to the Java world and I agree pretty much with this article. I'm not sure what people mean by technologies being hot or not. I still see Hibernate all over the place and see it growing even in the .Net world. Even the fluent query library someone mentions works as just a front end to Hibernate.

    I also like JSF 2.0 for the most part. Yes there are other frameworks and I will probably enjoy many of those too when I get around to them. But so far I like the balance I'm getting out of JSF. You lay out a view and write some code to back it....simple.

    There seem to be some errors in the article however. I can't find a JSF 2.0 version of OpenFaces unless I'm misreading somewhere. I'm using PrimeFaces right now which is nice. But I'd really also like to see a JSF 2 version of OpenFaces.

  11. Forgive me for trying to light a fire under the OpenFaces Team. OpenFaces 3 is in preview mode, and it demonstrates JSF 2.0 support. OpenFaces 2.0 was recently released, which itself has many exciting features that help make Ajax and Web 2.0 programming fun and easy.

  12. Wow, I've found Java to be somewhat stay-at-home, mature, and boring.  The thrill is gone.  Time to hit the bars looking for more promising technologies and vm languages. I'm hit'n my mid-life crisis so I'm looking for something edgy, cutting-edge, even dangerous.  I'm open to one-project-stands.  Maybe a sporty little cloud technology. Who cares about horse power - it scales! Maybe something functional like scala; sounds exotic. Live on the wild side (of transactions) with nosql. Java pays the bills during the day but I gotta party like its 2038 (Unix millennium bug).

     

     

  13. +1 scala, let the refactoring begin! scrum , nosql, noappserver too!

  14. True, I don't really care about what's in for Java 7.  For Java 6, I've used embedded HTTP as a web service provider just for the heck of it.  As far as the guy who said, Spring was hot in 2005 needs to check again. 

  15. To me it's those portfolio projects from Spring (forget the container) where lots of innovations is happening right now with great influencig potential on Java landscape. Spring Integration, Roo, dmServer (now Eclipse Virgo) and osgi, groovy and grails, and now even rabbitmq with AMQP in the mix. Being developed in complementary fashion these technologies are very promising and extremely interesting to watch.

    (I'm not affiliated with SpringSource :)

  16. spring is dinosaur[ Go to top ]

    really..... the fascination with the post-j2ee world has gone. Spring = heavyweight. Spring = ServiceLocator. Spring = Unscalable. Spring = 1 implementation per interface. Spring = Setter injection. Spring = slow. Spring = unimaginative. Spring = 5 lines of transaction management code. Spring = unrefactorable. Spring = for the muppets who want to get certifications. Spring = immature solutions for outsourced morons who;ve never read up. Spring = won't stop until the tools are as bad as VisualStudio...

    Stop me when I start to evangelise......

  17. I agree that it's a great time to be programming Java, but mainly because it's really easy to find a job.  As I wrote in my blog, however, I think the tides are shifting and the writing is on the wall for Java.  

  18. Sounds like you need ruby on rails to crank out some web sites or a CMS framework (from the blog entry), but if you are truly doing enterprise level work like BI, BPM, complex workflow, mobile development, etc. Then Java is still a great choice.

  19. Plus, it’s once again fun to be fooling around with the presentation layer, as Apache’s MyFaces went GA with a release that supports the much more Ajax savvy JavaServer Faces 2.0 API. And MyFaces isn’t the only JSF 2.0 compliant implementation around, as OpenFaces went GA with JSF 2.0 support in early March; and of course, perhaps the most feature full Ajax library for JSF, JBoss’ RichFaces, recently began distributing version 4 Alpha releases, demonstrating their support of the JSF 2.0 specification.

    Mojarra 2.0 went final a LONG time ago (October 19, 2009, to be exact: http://is.gd/bSMO1), so users can use JSF 2 in production right now.  But, yes, it's good to see component libraries like OpenFaces and RichFaces (and ICEfaces and...) reach compliance, and it's a really good thing to see MyFaces release their 2.0 impl.

  20. Until Spring offers developers to use the framework with less ( or zero ) XMLs and writing more Java codes, i doubt it grows up. Examples of things that have been grown up => .NET 4, C# 4, MEF, Prism, ASP NET MVC, they drive developers to write codes more and very very less XMLs.

     

    Cheers.

  21. spring 3.0 encourages you to use less xml and lets you use no xml if you choose to go that route.   Personally, it doesn't make me irrate to see a transaction manager or datasource defined in xml in a beans file rather then xml in a context  or server xml fiile.  But to each their own.

    But back to topic.  Java buzz has changed since when I was a wee runt.  When struts came out, it was an obvious time saver and applicable to all java websites.   Not much later ORM frameworks like hibernate started coming out and they were also an obvious time saver for all java apps that talked to a database.  I don't feel the same way with much if anything coming out these days.   nosql, osgi, scripting in a jvm, etc... are all really cool.  but they aren't the game changers that struts or hibernate were.

    From my perspective, I don't think it's any worse or better being an enterprise java developer now then it was in the past.  It's slightly less sexy, but the pay is better - at least post dot com bust.

  22. A glimpse of hope..[ Go to top ]

    Ouw, thing has been changed. I'd look at it later. It has been 2 weeks already since i have had my hope on java got high again after trying to port our ASP NET MVC web applications to Java web using PLay ! Framework. This framework is pretty fast, offered high productivity which is comparable ( or might be better) against ASP NET MVC/VS NET. Thanks to play!Framework ( http://www.playframework.org ) we wouldn't need to touch PHP CI when our clients demanded us to create them web apps which run in linux system. Yeah, we still need java & play to win our non-MSFT hearts until now.

  23. Asyn(CAP or latency)  + DDD + domain events maybe will get hotter in enterprise java?

     

    I don't think QueryDSL is good future, maybe we don't only think in SQL way,  should select NoSQL way?

  24. The cloud seems to have everyone thinking NoSQL. I've lined up a few experts and workers in the field to talk about NoSQL experiences, along with some interesting information to come on CouchDB as well. It's certainly another interesting area of Enterprise programming.

  25. The best way to make an even money bet on the SQL/NoSQL decision is to use a persistence framework that is independent of the underlying datastore - that way if the world leaves SQL and goes NoSQL you just plugin your favourite NoSQL plugin to your app and redeploy.

    Right now, out of the box DataNucleus (supporting both JDO and it's little brother: JPA) does this and it allows your datastore to be RDBMS, object database, Excel, XML, Google Big Table, HBase, ODF. If you're worried about whether the future is SQL or NoSQL then take out insurance and use DataNucleus.

    Start developing your app today without concern for whether your datastore is to be SQL or NoSQL now or in the future because it doesn't realy matter - so long as your object model is persisted using DataNucleus you're future proofing your application.

  26. JPA and DataNulcleus[ Go to top ]

    I love GWT and Google App engine. I've been developing a few different sites with it. There are a few limitations in the JPA implementation that really create roadblocks. There are detours around them, but they're just not elegant, nor do they instill confidence. Here's a description of some of the unsupported JPA features in the Google App Engine that tend to bring RDBMS applications to a grinding hault:

    http://code.google.com/appengine/docs/java/datastore/usingjpa.html

    Unsupported Features of JPA

    The following features of the JPA interface are not supported by the App Engine implementation:

    • Owned many-to-many relationships, and unowned relationships. You can implement unowned relationships using explicit Key values, though type checking is not enforced in the API.
    • "Join" queries. You cannot use a field of a child entity in a filter when performing a query on the parent kind. Note that you can test the parent's relationship field directly in query using a key.
    • Aggregation queries (group by, having, sum, avg, max, min)
    • Polymorphic queries. You cannot perform a query of a class to get instances of a subclass. Each class is represented by a separate entity kind in the datastore.

     

  27. That's because JPA will not persist (pun).  Its the JDO architecture which will thrive, without JPA, in google-land.  We're a virtual world now and google is the UN of that new politic.  Datanucleus was adopted by google to implement the persistence layer to bigtable.  While DNA supports both JDO and JPA, you really only need one, and better to adopt the one which has better coherence in google-land, or you'll eventually morph into a troll.

  28. QueryDSL != SQL[ Go to top ]

    QueryDSL is not only about SQL. The supported backends are JPA, JDO, SQL, Lucene, RDF and Java collections.

    We at Mysema are considering adding support for querying Cassandra, but until now there was no such need.

    I agree that Guice is as simply and safe as Dependency Injection can get. Spring is too bloated and Tapestry IoC is difficult for AOP.

  29. Cool[ Go to top ]

    ...that people are still excited. It's what matters, really.

     

    There will always be some "new cool thing" thats bubbling under. Let's take the good parts and make it a standard. And there will always be stuff that doesn't make it to standards. Let's try getting them into MR:s. 

    "Foo sucks" will never get us anywhere. Let's make Foo better. Just laying down and saying ".NET is so much better" will just get as walked over.

  30. In my opinion the NEXT BIG THING in Enterprise Java is Single Page Interface (SPI) applied to WEB SITES (not only web applications).

    Imagine millions and millions of web sites being ported to SPI to dramatically improve the user experience (NO reloads), bandwith and server computing saving, avoiding the burden of page based web development, without sacrificing SEO, bookmarking, Back/Forward buttons, freedom of web design, WYSIWYG tools.

    In this scenario Java is ahead but in this case is not JSF the most appropriated technology. More info:

    The Single Page Interface Manifesto
    Single Page Interface Web Site With ItsNat

    SPI web site online demo

     

  31. I think Echo has been doing a single page interface for years if you mean what I think you mean by 'single page'.

    On another note, here's my view of things:

    +1 Echo

    +1 Wicket

    +1 JDO/Datanucleus

    +1 expojo for *extremely* lightweight dependency injection

    -1 Spring

    -1 Hibernate

  32. I think Echo has been doing a single page interface for years if you mean what I think you mean by 'single page'.

    Yeah right, but I talking about WEB SITES, that is, web sites with SEO requirements (and bookmarking, Back/Forward simulation etc) and so far ItsNat is the only tool providing Single Page Interface with SEO (and other benefits like plain HTML templates, WYSIWYG design etc) without the burden of duplication (providing a page based alternative), the same web site is SPI if JavaScript is enabled and page based when JavaScript is disabled or ignored (like search engines see your sites) and by the way accessible with no need of especial WAI-ARIA code.

    Try to execute some Google Search on your preferred AJAX intensive tool to search data dynamically loaded by AJAX.

     

  33. To this day, I can not understand of using 1 framework that "promises" AJAX site by using Java only.  Sure, the demo works great.  Sure, hello world tutorial works wondeful.  Just wait until you get a requirement that is not part of the framework.  Sure, they always have "plugins" that says "It is easy!".  So, all these framework is basically saying use Java to create your JS, CSS, and HTML.  You don't need to know CSS or Javascript to get AJAX.  Seriously, you can't be a web developer without knowing JS or CSS.  One should not be afraid to use prototype, jQuery, scritaculous to incorporate AJAX functionality in your site.  JavaScript is your friend and not your enemy.  I'm sure ItsNat has many more cool functionality than just AJAX functionality but I can not support "Java rules all" concept.

  34. To this day, I can not understand of using 1 framework that "promises" AJAX site by using Java only.  Sure, the demo works great.  Sure, hello world tutorial works wondeful.  Just wait until you get a requirement that is not part of the framework.  Sure, they always have "plugins" that says "It is easy!".  So, all these framework is basically saying use Java to create your JS, CSS, and HTML.  You don't need to know CSS or Javascript to get AJAX.  Seriously, you can't be a web developer without knowing JS or CSS.  One should not be afraid to use prototype, jQuery, scritaculous to incorporate AJAX functionality in your site.  JavaScript is your friend and not your enemy.  I'm sure ItsNat has many more cool functionality than just AJAX functionality but I can not support "Java rules all" concept.

    Hi Kevin, maybe you don't know very much about ItsNat. ItsNat is middle/low level tool, in ItsNat there is absolute freedom of design, because so far there is no default look and feel, you must add your own CSS and your own markup as ever.

    With respect to JavaScript, in some way ItsNat is like JavaScript executed in server but in Java using W3C DOM Java APIs, you are doing the same you do in client but executed in server with the power of Java, OOP, IDE support etc. In theory you could use Rhino and JavaScript.

    And finally because the framework does not impose a concrete layout, many things can be done in client for typical animations hard to delegate to server, because HTML layout is not touched by ItsNat and ItsNat JavaScript is unbstrusive. For instance I have a site using ItsNat, custom JavaScript and jQuery for some cool effects (I just can give you the link in private), and this website is a mix of custom JavaScript and ItsNat in server (sometimes the server is requested by client JavaScript and sometimes is the server calling client JS code).

     

  35. Imagine millions and millions of web sites being ported to SPI to dramatically improve the user experience (NO reloads), bandwith and server computing saving, avoiding the burden of page based web development, without sacrificing SEO, bookmarking, Back/Forward buttons, freedom of web design, WYSIWYG tools.

    Yeah, I agree. It would be scary and ugly beyond belief.

  36. Imagine millions and millions of web sites being ported to SPI to dramatically improve the user experience (NO reloads), bandwith and server computing saving, avoiding the burden of page based web development, without sacrificing SEO, bookmarking, Back/Forward buttons, freedom of web design, WYSIWYG tools.

    Yeah, I agree. It would be scary and ugly beyond belief.

    Really ? Google daddy is thinking about this kind of future right now with, by the way, sub-optimal solutions like headless browsers based on HtmlUnit executing JavaScript in server, ItsNat solution is by far better and has been here for a while.

     

     

  37. Really ? Google daddy is thinking about this kind of future right now with, by the way, sub-optimal solutions like headless browsers based on HtmlUnit executing JavaScript in server, ItsNat solution is by far better and has been here for a while.

    That's irrelevant. Indexable content should be presented in the form of interlinked easily accessible pages. Without AJAX or other dynamic HTML stuff. And certainly without the brain-dead SPI.

    AJAX should be used for rich frontends - Google Mail is a good example. Using AJAX to navigate complex structure might also be a good example.

    Also, it's kinda telling that ItsNat uses PHP for its own site...

  38. That's irrelevant. Indexable content should be presented in the form of interlinked easily accessible pages. Without AJAX or other dynamic HTML stuff. And certainly without the brain-dead SPI.

    AJAX should be used for rich frontends - Google Mail is a good example. Using AJAX to navigate complex structure might also be a good example.

    Also, it's kinda telling that ItsNat uses PHP for its own site...

    All of relevant applications done by Google these days are developed using the "brain-dead SPI" paradigm, GWT is highly focused on SPI... welcome to Web 3.0.

    The problem is ... GWT is not SEO friendly, they want to mitigate this with hacks like HtmlUnit in server... ItsNat is better.

    PHP is used in ItsNat web site because ItsNat is *fully* hosted in sourceforge.net, to show you that I eat my own dog food, Innowhere.com my corporative (conventional and boring) WEB SITE is based fully on SPI (previously based on pages), and Google Search loves it.

    I could convert ItsNat's web site to SPI in a couple of hours with no need of PHP source code, I've done this before with innowhere.com and with another by far more complex web site.

     

  39. All of relevant applications done by Google these days are developed using the "brain-dead SPI" paradigm, GWT is highly focused on SPI... welcome to Web 3.0.

    Nope. Google groups are not SPI,Google Mail should not be SPI, etc. You'll find A LOT of non-SPI Google apps.

     

    The problem is ... GWT is not SEO friendly, they want to mitigate this with hacks like HtmlUnit in server... ItsNat is better.

    That's why SPI should not be used for _content_.

    PHP is used in ItsNat web site because ItsNat is fully hosted in sourceforge.net, to show you that I eat my own dog food, Innowhere.com my corporative (conventional and boring) WEB SITE is based fully on SPI (previously based on pages), and Google Search loves it.

    Google might love it, but I certainly don't. For example, menu links are not right-clickable, so browsing on a mobile connection is a pain (I can't open several links at once).

  40. Nope. Google groups are not SPI,Google Mail should not be SPI, etc. You'll find A LOT of non-SPI Google apps.

    The problem is ... GWT is not SEO friendly, they want to mitigate this with hacks like HtmlUnit in server... ItsNat is better.

    Because they have VERY SERIOUS problems to seamless convert conventional web pages to SPI with GWT and keep them SEO compatible, maybe they don't know the right tool :)

    Google might love it, but I certainly don't. For example, menu links are not right-clickable, so browsing on a mobile connection is a pain (I can't open several links at once).

    Oh yeah, I forget adding "dual" links (AJAX and normal) to the menues, try with this example (from the SPI web sites tutorial), and by the way, it works in your favorite mobile web browser including the crap of Pocket IE of Windows Mobile 6.0 :)

    This is a similar discussion to AJAX being introduced some years ago, SPI is here to stay and going to conquer more and more space, more and more web sites.

     

  41. PHP is used in ItsNat web site because ItsNat is fully hosted in sourceforge.net, to show you that I eat my own dog food, Innowhere.com my corporative (conventional and boring) WEB SITE is based fully on SPI (previously based on pages), and Google Search loves it.

    Also, try it in screen reader (accessibility is a hard requirement for a lot of companies). Your site is a mess, while PHP page is usable.

  42. Also, try it in screen reader (accessibility is a hard requirement for a lot of companies). Your site is a mess, while PHP page is usable.

    Have you tried to disable JavaScript in your browser? The same SPI web site is "magically" now page based (interesting for screen readers), I promise there is NO duplication (AJAX site and page based site), try yourself downloading the SPI tutorial, the same thechniques as innowhere.com are being applied (plus back/forward simulation in SPI).

    Any other feature request?

     

     

  43. Well, this post says (while it's not the main topic of this post) that Java has been revitalized through annotation introduction and JEE 6, being less complex that other previous versions.

    ""

    But right now, you can just start from your pojo and build from there. You want persistence? Add JPA annotations. You want some domain logic, you can just start programming (no need to first build a UML model, than generate, than code). Security? There are annotations for that. Need dependencies, like helper classes, injected? Spring does it elegantly without interfering in your code, either via XML or annotations.

    If you’re getting started, it’s a lot, but a JEE6 technology a day keeps the frustrated developer away.

    ""

     

    On the other side, PHP is more and more complex.

    IMHO, with PHP 5, and object orientation introduction, PHP 5 is somewhat close to Java now, see my post PHP 5 is close to Java 1.4 and maybe even more much closer to JavaScript!

    Well, last time I have read a PHP-related post, it was about AOP (!) use with PHP. At *first* sight, PHP was not better than Java on this topic, in fact, worse I think.

     

    So, Java is less and less complex.

    PHP is more and more complex...

     

    Well, today it's still quite interesting to be a Java programmer !

     

  44. Ruby on Rails[ Go to top ]

    I thought by now we would all be programming Ruby on Rails, considering all the hype in the past 5 years.  Never did happen did it? Yup, I'll say it again, Java is the COBOL of the 21st Century.

     

  45. Ruby on Rails[ Go to top ]

    I thought by now we would all be programming Ruby on Rails

    Nope. Other people program in Python/Ruby/PHP.