Wednesday, November 23, 2005

Java, the Obsolete Language

Just read someone's post on why Java is becoming stupider. I have to agree. The industry always strives to build complexity. I have successfully stayed away so far from all the new language features of JDK 5 (they changed the name yet again to JSE instead of J2SE at this year's JavaOne). After developing Corernstone Framework G3 on JavaScript, I have been convinced more than ever that Java will not be my language of choice for the foreseeable future. I have already left the building so to speak. However, this is not to be confused with our continued use of JVM. See my earlier post on Java the language vs. JVM the platform.

Long live Java!

Monday, November 14, 2005

Seaside and Other Thoughts

There were several recent posts on Seaside, a Smalltalk web framework. Only today did I watch its videos. It is indeed wonderful. Several things set it apart from the rest of the crowd:
  1. A complete flow that would usually involve multiple servlets and forms is programmed in one method (using continuation although whose concept is not exposed to the developer directly).
  2. All request handlers are blocks (closures), saving the need for separate servlets.
  3. A natural hierarchy of components on the page gives it a portal like page model so that compnents (portlets) can interact on the server side.
  4. Components can be easily reflected to reveal their information for easy debugging.
  5. Requests can be of type goto or (subroutine) call.
My comments:
  1. Number 1 is seen in many other frameworks (Apache Cocoon uses continuation in JavaScript; Ruby and Python both have continuation support). But Seaside's developer model seams very intuitive. I will start thinking about how to implement this in Cornerstone Framework G3.
  2. Number 2 is a good use of closures (which JavaScript supports well; No such thing in Java). We already have extensive use of closures in G3.
  3. Number 3 is what we have seen in portal servers. I was thinking along the same lines but to let the portlets not only be able to communicate on the server side but also on the client side. We will implement that in G3.
  4. Number 4 is an obvious benefit of the underlying language (Smalltalk) being a dynamic one. JavaScript can do the same with ease. We will implement this great feature too.
  5. Number 5 we already had in G2. It was only used in demos. No production use yet. But the Seaside demos show how useful it is. We will sure carry it over to G3.
These days I am really getting excited about G3 as I started to implement it. It will be the beginning of:
  1. A web command prompt, a Unix shell prompt on steroids, enabling the user to do anything (web or local) through it, whose special case is a completely graphical UI that has no actual command prompt.
  2. A world-wide spreadsheet. I find spreadsheet to be an excellent model for developing something (we call it application but an average Joe does have to know it). Now just imagine a new page to be a spreadsheet that links to other pages through a URL (a service delivered in the REST model). The world-wide web is ready for the next giant leap to a web of applications.
BTW, I have actually started to implement the bible reading application that Francis proposed because I find myself needing it yesterday. I was using an HTML editor to put things in a table and quickly realized it would not scale to meet my needs. So that application will be the first to drive the development of G3, in addition to the unit test cases that I have been writing.

These days I am too excited to sleep! I hope to disseminate the information to you guys soon.