Friday, September 12, 2008

Biggest Long-Term Problem for Java

Java's biggest long-term problem is that it is not the technology of choice for entrepreneurs. Specifically, entrepreneurs have greater incentives to choose simpler and more inexpensive technologies like PHP, Ruby on Rails, and Python. Java was very entrepreneurial 10+ years ago when it came on the technology scene because it opened new doors for programmers. Since that time, Java has expanded and matured into the technology of choice for many enterprises (i.e., medium to large organizations). In an attempt to compete with Microsoft for large enterprise clients, Sun has put more emphasis on JSRs that focus on solving enterprise problems like SOA, object relational mapping, and JavaServer Faces. Unfortunately, the process of serving enterprises has made Java larger and more complex and, thus, has created more barriers to entry for technology entrepreneurs. Last week, I went into more detail regarding Java's barriers to entry for entrepreneurs in my post Java vs. Ruby on Rails.

If Java is going to continue to be the technology of choice for medium to large businesses, it needs to become the technology of choice for today's small business because they will eventually become the next generation of medium and large businesses. In addition, many enterprises desire to be more entrepreneurial for the purpose of competing with today's generation of entrepreneurs. Two things I think Sun can do to increase the use of Java by entrepreneurs:
  1. Provide really cheap, scalable hosting - Sun should emulate the hosting environment that Google's App Engine has created for Python programmers. Most enterprises want to manage their own data center so this should not threaten Sun's existing revenue streams or the revenue streams of Oracle-BEA and IBM WebSphere. If Sun is lucky, Java will be the next technology that Google's App Engine chooses to support.
  2. Choose and endorse a web framework - Sun should choose and endorse a web framework for entrepreneurs to use. Last time I used it, Sun's JavaServer Faces was the most complicated web framework available. I have have not used either, but it seems like Groovy + Grails is a good combination that can seed the next generation of Java enterprise organizations. In addition, I have not used Struts 2 and, so, I am interested to hear what people think about it is as a choice for entrepreneurs.
Your thoughts?

24 comments:

  1. "Provide really cheap, scalable hosting" would be nice, but won't be its downfall.

    ReplyDelete
  2. I'd point at the scripting languages currently supported by GlassFish (https://glassfish-scripting.dev.java.net/discover/), as well as Charles Nutter's blog about increasing jRuby's speed with InvokeDynamic(http://blog.headius.com/2008/09/first-taste-of-invokedynamic.html).
    Just because Java is becoming a more mature language doesn't mean that it can't be a platform for lighter-weight languages like PHP, Ruby, or Python, and Java has the advantage that it has already solved many of the problems (threading, memory management, Garbage collection) that those languages are beginning to encounter, and the Java-based implementations of those can leverage the solutions that Java already has.

    ReplyDelete
  3. I think a lot of people mix together Java the language and the Java EE APIs. I agree a lot of the APIs are weighty and "enterprisey", but Java the language continues to have great value.

    ReplyDelete
  4. Eagle, Java does a great job with handling scalability issues like threading, memory management, and Garbage collection but is there an affordable, easy to use GlassFish hosting service?

    ReplyDelete
  5. > choose simpler and more inexpensive technologies

    GlassFish is free open source with commercial support available that is around 75% cheaper than WebLogic and WebSphere. JBoss and Tomcat are also free open source with affordable support available. Read about GlassFish V3, you will really like what has been done.

    > Provide really cheap, scalable hosting
    Done whichever way you prefer:

    1) http://joyent.com/partners/sun/

    2) http://www.sun.com/emrkt/startupessentials/index.jsp

    > Choose and endorse a web framework

    The JCP (many companies, not just Sun) has already chosen and endorsed a web framework: JSF. Yes it had many challenges, and all of them are being addressed in JSF 2.0:

    http://www.jcp.org/en/jsr/detail?id=314

    A major theme in Java Enterprise Edition 6, JSF 2.0, Web Beans, etc. is to make it super easy and very powerful.

    Also, not everyone agrees that scripting languages like Ruby, Groovy, PHP, Python, etc are better. I much prefer to do 100% java.

    ReplyDelete
  6. I forgot to mention that Java hosting seems more expensive than PHP hosting because usually you get a virtual private server (VM, whatever you want to call it) which uses a slice of finite resources such as memory, cpu and disk space. PHP VPS is probably comparable in cost. You can get dirt cheap Tomcat (Java) shared hosting that is on part with PHP if you look hard enough.

    ReplyDelete
  7. I think that not many people will use Scripting in Java the way you see it. I think it could be hard to find java+groovy developers compare to plain java developers. for this reason i dont think we all would need to know all the scripting languages(we all change jobs, i mean most of us).

    I think that if some person wrote some code in lets say python you can just use that code in your app and extend it using java. so java could eat for example php app and slowly change it into java app.

    i dont think developing in java is that hard and for some reason you dont talk about javascript. javascript is the hottest scripting languages(i bet its best known), look at all the ajax frameworks.

    ReplyDelete
  8. Sun should do this... Sun should do that... Java is Sun and Sun is Java.

    If anything will kill Java then it is a thinking like yours: "Sun is Java and Java is Sun".

    Java should be an open standard and should not be owned and controlled by one only company.

    ReplyDelete
  9. I totally agree with you ! Java biggest problem is the forgotten small businesses ! it's really hard to find Java shared hosting compared to php or ASP.NET, though I'm disappointed I'm not using Java, it has the most loyal developers base !

    ReplyDelete
  10. For another take on why Java isn't the first choice of startups, check out Paul Graham's classic essay on "The Python Paradox."

    ReplyDelete
  11. Deli, thanks for the hosting tip. 12 months of free hosting from Sun + Joyent for Facebook and OpenSocial applications appears to be great program but the program only supports PHP, Ruby on Rails, and Python.

    ReplyDelete
  12. Ulrich, I agree, Sun should not be held 100% responsible for Java's future success. So, maybe Oracle-BEA, IBM WebSphere, or companies like Google and Yahoo should get into affordable Java startup hosting market.

    ReplyDelete
  13. > it's really hard to find Java shared hosting compared to php or ASP.NET

    You have GOT to be kidding, right? Search "shared tomcat hosting" on google and you can easily find hosting for $4/month, $7/month, $11/month, I've even seen $2/month. Saying that you can't get affordable Java hosting is not a valid argument.

    Robert: The link I posted is about the 25% discount on Joyent Accelerators, which is a "cloud computing" offering. You get a dedicated Solaris container (VM) which can be scaled up with more disk space, memory, or cpu when required. You can run anything you want in there including the GlassFish Java EE5 application server. Even the regular price of $45/month or $199/year is not a lot of money for any serious startup. If you can't afford that then you are not a serious business. If you choose PHP because it's cheaper for hosting over the power and scalability of Java, then ... well, I won't go there.

    ReplyDelete
  14. Last week, I went into more detail regarding Java's barriers to entry for entrepreneurs in my post Java vs. Ruby on Rails.

    You're comparing a language to a framework. How does that make any sense at all?

    ReplyDelete
  15. In ways most likely not intended in the original blog post, IBM's projectzero.org addresses the first issue in the following way:

    Provide really cheap, scalable hosting... The Project Zero runtime executes applications inverted from traditional app server models. Runtime is lightweight and only load components required to support the app. Further, the runtime starts and stops an application on demand to increase resource utilization, saving off necessary state between processes. Thus achieving the ability to execute many applications on a single box with the ability of horizontally scaling.

    ReplyDelete
  16. How about Jboss Seam as a framework?

    ReplyDelete
  17. Groovy is not the answer.

    http://media.tumblr.com/hV6qYy3NUdriivjeei2I4VZo_400.jpg

    Groovy is what Java could have been if it didn't move forward like a river of molasses. Java is in decline because it changed too slowly. Groovy is a valiant attempt to fix that but the implementation is awful.

    Python/Django makes Groovy/Grails look like a toy and it's just one of several competing frameworks that are far out and ahead. That battle has already been lost for Java.

    ReplyDelete
  18. Java is in decline? Huh. Because of a web framework. Huh. Dude, don't bogart the good stuff.

    ReplyDelete
  19. Reading comprehension is a grade school skill:
    "Java is in decline because it changed too slowly."

    ReplyDelete
  20. "Reading comprehension is a grade school skill:"
    Right back at you.
    I got straight A's in HS and it wasn't a crappy public school. I comprehended what you said. YOU didn't comprehend my point. So as usual, when someone is wrong, they attack the person.

    "Java is in decline because it changed too slowly."
    You've yet to prove it is in decline. The only "proof" you seem to have is a web framework.

    ReplyDelete
  21. How's this for hosting?

    http://www.sun.com/third-party/global/glassfish/index.jsp

    12 months of free GlassFish hosting for startups.

    * 1/16th of a quad-core CPU
    * 512MB RAM
    * 10GB of storage
    * 1000GB bandwidth data transfer
    * Pre-installed and configured GlassFish and MySQL for quick development and deployment


    Regarding Java on the decline.. I guess your perspective depends on which RSS feeds you read and who your friends are. One could think NetBeans is the most talked about IDE on the planet if you subscribe primarily to NetBeans RSS feeds.

    From my perspective Java has never been more popular than it is today and it is only getting more popular. The JSR standards ARE evolving and are changing the whole industry. They change every three years like the rest of enterprise systems such as RHEL, Solaris, Debian, etc.

    Who wants to learn more languages just for syntactic sugar? Do some things in scripting languages and other things in Java? That's such a waste of time. Stick with Java for everything, end-to-end. It is a complete solution for small projects to mega enterprise systems. Cheap hosting for web projects is definitely available.

    ReplyDelete
  22. Struts 2/Webwork is a nice clean command pattern framework but it needs something like Hibernate and Struts on the back end to make it work. This increases the complexity to the point where you have to be experienced to be able to take full advantage. Grails on the other hand already uses Hibernate and Spring under the covers, hiding the complexity. This means that the full power of those frameworks is available if you need it but that you don't have to learn them right away. Grails at least has good integration with the GWT front end framework whereas the Struts 2 integration requires a bit more work.

    ReplyDelete
  23. Yellek: I hear what you're saying about hiding complexity but in my experience Grails fails pretty miserably at this. I don't think we can blame the Grails and Groovy developers, I just think what they're trying to do is incredibly difficult--like trying to hide a rhinoceros under a Persian throw rug.

    The more important issue to me is the thesis of this blog post: Java usage among entrepreneurs is dropping so there are fewer folks picking up Java.

    I'm not surprised and I don't think Groovy nor Grails will stop this trend. Together they do present an improvement over traditional Java web application development but they score poorly against the many competing languages and frameworks available today.

    ReplyDelete