« Architectural Improvement by use of Strategic Level Domain-Driven Design | Main | Chapter 4 [Why Java Now Sounds Like] Glass Breaking »

Chapter 3 [Java's Technological] Crown Jewels


If you're to understand what might possibly come after Java, you need to ask questions about Java's continued success:


  • What makes Java hip, and draw such a wide variety of people?
  • How has the open source community thrived, in times, despite Sun and the power vendors?
  • What are the indispensable technical underpinnings that make Java successful?
  • What makes Java so adaptable that programmers can build everything from web sites to databases?


If you're to understand what might possibly come after Java, you need to ask questions about Java's continued success:


  • What makes Java hip, and draw such a wide variety of people?
  • How has the open source community thrived, in times, despite Sun and the power vendors?
  • What are the indispensable technical underpinnings that make Java successful?
  • What makes Java so adaptable that programmers can build everything from web sites to databases?


Reasons for Java's success according to top Java consultants


  • James Duncan Davidson - server-side programming efficiences; server-side programming in before Java was hard.
  • Jason Hunter- Applets
  • Dennis Sosnoski - Java has a well-designed language and runtime environment.
  • Stuart Halloway - It was better than C++.
  • Richard Monson-Haefel - Java is a great static object-oriented programming language. It's portable and has loads of APIs, products, and open source projects. It is a well-designed language and virtual machine. Initially, it was a very progressive and well-timed language design.
  • Ramnivas Laddad - garbage collection and reflection.


3.1. Language and JVM Design


In 1996, the JVM represented a significant departure from traditional thinking.

3.1.1. Portability


Java's virtual machine simply redefines the machine, providing a lower-level, firmer foundation for portability. Java designers bet that they could overcome performance concerns. When all is said and done, popularizing the idea of the VM may be the most important technical contribution of Java.

3.1.2. Security


  • Changing threats - Microsoft Windows has been besieged with security problems.
  • Remedies in Java

The virtual machine gave Java designers the sandbox, and there's no pointer arithmetic, and because Java has strong runtime typing.

3.1.3. Moving Forward


The idea of the virtual machine is here to stay. The intermediate virtual machine transforms the basic problems of portability, security, and deployment from nearly unsolvable to routine. If the virtual machine adapts to accept dynamic languages, the JVM will probably be the deployment platform of choice for the foreseeable future.

3.2. The Internet


  • Java included convenience features to make applications programming easier. Java added garbage collection and memory management.
  • Java's vision for enterprise computing was centered on the Internet.
  • Java's fathers keenly moved to improve simplicity, at the price of low-level flexibility.
  • Very early, Java was targeted at mobile applications, extending the primary focus of Java into the Internet.

When Sun embedded Java into the first version of Netscape Navigator, this vision looked quite possible.

3.2.1. A Consistent Evolving Vision


Later, applets fell out of favor. Different views of why they failed:

  • Deployment was hard.
  • Programming was hard.
  • The Netscape JVM was buggy.

For whatever reason, applets faded into the background. But Java is a surprisingly nimble beast, at times. In the halls of Netscape, server-side Java emerged. Servlets (a term originally coined by O'Reilly) made server-driven Internet applications available to application developers.


Java's emphasis quickly moved wholly to the server side, where it remains today. Java Server Pages (JSP) continued the evolution.

3.2.2. Moving Forward


The vision of Internet applications is not yet complete. Google is now experimenting with Ajax , which seeks to provide a better experience to users with generated JavaScript? and XML that communicates with the server.

3.3. Enterprise Integration


Java's partnership with IBM, Oracle, BEA, Borland, and others paid huge dividends. They enabled Java connectivity to databases, transaction engines, messaging systems, and any other enterprise system that required a Java connection.


Java remains a good language for enterprise integration projects, because of the high number of frameworks that solve so many of the critical problems.

3.3.1. Moving Forward


Today, Java can talk to just about any enterprise system that's important to you. Beyond integration, Java now provides excellent facilities for mapping object-oriented models to relational databases. You can do distributed coordination of transactions, and manage massive messaging systems with first-class rules engines and workflow.


In the end, Java is sacrificing its primary base, exchanging what was productive and hip for something that is tedious and slow, but powerful.


I'd guess that as many as half of all commercial applications involve a web frontend that baby-sits a plain old relational database. A challenger in that space need only provide a much more productive solution to a niche problem than Java.



3.4. Community


The most critical crown jewel for Java is the community. Said another way, Java's market share makes it the 500-lb. gorilla who can sleep anywhere he chooses. Java's community is as massive as it is diverse.

3.4.1. The Importance of Open Source


In the beginning, open source software powered the servlet revolution through Tomcat. Then, we learned to build with [Eclipse and] Ant , and test with JUnit , and continuously integrate with products like Cruise Control. Later, Struts software changed the way that we organize web-based user interfaces, and Hibernate led a resurgence in transparent persistence. You could easily argue that the most compelling innovations are happening in open source projects

3.4.2. Moving Forward


If there is to be an ultimate challenger for Java, the next successful language will need to achieve a critical mass quickly. That suggests to me that there will need to be some sort of catalyst, like applets in Netscape. The next successful language will probably also need to nurture a massive open source programming community, if it is to enjoy the variety and longevity of Java.

3.5. Breaking the Myths


  • Myth 1: Java's Leadership Is Unassailable
  • Myth 2: Java Is a Great Applications Language
  • Myth 3: Java Is the Most Productive Language

    • Corollary 3a: All languages are about the same

  • Myth 4: Commercial Interests Drive Most Java Innovation
  • Myth 5: Big Things Usually Come from Likely Sources