ay 2005 marked 10 years since Sun first introduced Java technology to the world. In the decade to follow, the language begat a platform, which begat a community, which begat an entire ecosystem, in which software players, open source projects, and individual programmers alike all thrive. Today, some 4.5 million developers and some 1.4 billion devices all use Java.
But we won’t bore you with yet another retelling of the Java success story. Instead, DevX distributed a questionnaire (one question for each year of existence) to capture personal accounts of the Java experience from the people most involved with the technology—developers. Respondents ran the gamut from consultants and authors to CTOs and senior technologists at BEA, IBM, and Sun.
The following are some of the eye-opening responses we received.
1. How did you begin programming in Java?
Java garnered the attention of everyone from pragmatic technologists…
“I first started programming in Java when it was still called Oak, sometime in late 1993 or early 1994. I was leading a research group in Sun Labs. Once we started using it, we realized that the best thing about Java was the ability to move code from one VM to another in a reasonably secure way,” replied Jim Waldo, distinguished engineer at SunLabs
Rod Smith, vice president of emerging technology for IBM’s Software Group, wrote, “We saw that the Java platform was ‘good-enough’ technology and held the potential to be a significant disruptive force in the industry. We decided we had better ‘get on the bandwagon’ and adopt Sun’s Java technology rather than relying on our previous pattern of trying to develop everything ourselves.”
Ed Cobb, vice president of architecture and standards in the office of the CTO at BEA Systems, wrote, “We had options of other mainstream object-oriented languages, but Java offered a better blend of features that makes it suitable for large-scale development efforts in team environments.”
“For most of the last 10 years, I was employed at Sun, and so I’d have to say that Java ‘happened’ to me. Had it not happened, we would have needed something very like it to tap the network-computing environment that was evolving in the industry.”—Rob Gingell, executive vice president and CTO, Cassatt Corporation
…to diligent comp-sci students…
Michael Pilone, senior software engineer for Blueprint Technologies, replied, “I figured I was going to need to know it to get a decent job. Although the university [I was attending] was (and still is) teaching in all C++, I taught myself Java on the side.”
“During my Master’s study, my professor asked me to work with Java. I did my entire course work starting with beta Java 1.0.”—Raghu Donepudi, lead systems developer, Global Computer Enterprises
…to programming enthusiasts…
“[I began programming in Java] as soon as it came out. I was very excited about the prospect of [“write once, run anywhere”] WORA and Applets.”—Jack Herrington, author of Code Generation in Action (Manning) and the editor of the Code Generation Network.
“I started learning Java even before the 1.0 version, because it was supposed to be an alternative to Microsoft (I had very disappointing experiences with VB and Visual C++) and to Pascal,” wrote Laurent Ploix, project manager and technical architect for SunGard-Finance.
“In 1997 I took a Java manual as vacation reading and spent time on the beach immersed in the beauty of it. I switched to Java, declared C++ a legacy language, and never returned.”—Vlad Patryshev, former R&D engineer, Java Business Unit, Borland
2. How well has Java executed on the promise of “write once, run anywhere” (WORA)? Has the importance of WORA changed at all over time?
“The Java Virtual Machine, at least in concept, is the most powerful idea behind Java. It’s definitely delivered on the portability promise.”—Bruce Tate, president of J2Life, LLC, a Java technology consulting firm
“Application servers and J2EE applications can be moved between platforms nicely. I think WORA on the client side is still quite questionable and may never really take hold.”—Michael Pilone
“It made me a platform agnostic.”—Vlad Patryshev
“Java’s early success was essentially due to WORA. It provided a fundamentally different set of economics for SIs, ISVs, and software engineers than did (and do) many of its alternatives.”—Rod Smith
“Java’s performance on WORA a) has been better than anything prior to it, b) is still better than any other alternative, and c) remains a key part of Java’s value proposition.”—Rob Gingell
“WORA has delivered for me EVERY time. I have always done my Java development on Windows, but I have always deployed to Solaris or Linux environments without a single issue.”—Eric Bruno, an independent consultant specializing in software architecture, and enterprise Java and C++ development
“You can convert bytecode to MSIL, and you can run Java in J#. This lets us maintain a single code base for Java and .NET for our products.”—Michael R. Smialek, president and CEO, Knowledge Dynamics
“I regularly develop, test, and deploy [Java] code across Windows, Linux, and Sun Solaris boundaries with only slight modifications to XML configuration files. The importance of WORA, however, has diminished with the emergence of service-oriented architecture.”—Kyle Gabhart, author and independent consultant
“Perl, Ruby, and Python are just as portable.”—Jack Herrington
“Some have claimed that as the number of operating systems in common use declines, WORA will become less important. The reality is that as long as there are even two reasonably likely target platforms, WORA is still important.”—Ed Cobb
3. What percentage of your production code would you say is Java? How do you expect that percentage to change in the future?
Nearly all respondents claimed Java was a majority of their production code, most placing it at more than 70 percent. None projected a decrease going forward.
“Last year we certified more than 800 offerings on Java technology. Nearly all our middleware depends on Java runtimes.”—IBM’s Rod Smith
“Among our customers, we still see a lot of C and C++ for mission-critical applications with predictable latency requirements. Often they would like to use Java, but Java VM technology is just now getting to the point of being up to running these sorts of systems.
In Web application development, I think we’ll see a bit of a backlash against dynamically typed languages when people’s applications become larger and more complex; they’ll experience run-time type exceptions that they realize could have been prevented if they were using a strongly typed language such as Java.”—Ed Cobb of BEA
4. What percentage of your Java applications are desktop apps versus server apps? If you write desktop applications, do you prefer SWT or Swing, and why?
Bruce Tate’s response to this question summed up all the others: “Server-side Java is where it’s at.”
And as for the minimal client-side Java development that does occur…
“Swing is too complex, too unpredictable, and too hard to learn. SWT is a little better, but in general, Java stinks on the user interface.” – Tate, who also wrote Better, Faster, Lighter Java and Bitter Java
“I think SWT has a better approach, linking to native libs for speed and consistency, but I don’t like the API. It exposes too many of the underlying artifacts. Swing has a nicer API, but it is riddled with bugs, poor performance, and terrible layouts.”—Michael Pilone
“I strongly prefer SWT…it’s much more native than Swing, which is best described as a rough approximation of native.”—Ed Cobb
“I write Swing apps and deploy them using Java Web Start. I am not yet sold on SWT due to its limited cross-platform support and lack of solid MVC design.”—Kyle Gabhart
5. What are your platform, framework, and IDE of choice for Java development?
The popularity of the Eclipse framework and IDE was evident in the responses to this question, as was the dominance of the Windows and Linux platforms. Only a few respondents designated alternatives:
“My platform of choice is WinXP Pro. After installing Cygwin and a few other utilities you can get a very usable system with hardware support.”—Michael Pilone
“J2SE 5 is my favorite. For IDE, I prefer JBuilder. IDEA is second. IDEA has some smart features, but good old JBuilder has everything I need.”—Vlad Patryshev
“I’ve used emacs for development and println for debugging. Recently I’ve been using NetBeans, and have been surprised at the help it can give.”—Jim Waldo
“No EJB please!!”—Laurent Ploix
“In a pinch, I have been known to develop using vi.”—Kyle Gabhart
6. Which have been responsible for more Java innovations: Java Community Process specifications or open-source implementations?
“Open source, by far. The JCP generally believes in standardizing before accumulating practical experience. EJB, logging, and persistence have all been disasters within the JCP. The JCP is really abandoning Java’s base. Very hard problems are getting marginally easier to solve, but easy problems are getting much harder.”—Bruce Tate
“Open source implementations are leading the development process, and the JCP is only defining norms.”—Laurent Ploix
“If speaking of purely innovations, I would say open source. Open source is quick to respond when there is a hole that needs to be filled. The JCP is way too slow right now to keep up with the industry.”—Michael Pilone”
“Most innovations have come through the JCP model. Over the past couple of years, however, we’ve been seeing signs of increased activity in the open source model.”—Rod Smith (IBM)
“The JCP specifications deserve immense credit for getting the ball rolling. It provides a certain ‘center-of-mass’ to the Java ecosystem. Many ‘non-JCP-standard’ open source projects have explored various and sundry ideas—some awful and some wonderful. It’s a great innovation engine.”—Ed Cobb (BEA)
“The JCP itself only codifies specifications that are backed by an existing implementation. As programmers, we do not want to write to an implementation of Java, we want to write to a specification, which implementations fulfill. Useful programming often starts as a fragment of code, and often evolves ‘code first, specification later.'”—Rob Gingell
“I have found open-source initiatives, especially from Apache, to the most innovative and useful.”—Eric Bruno
7. Should Sun open-source Java?
You knew this would be on the questionnaire.
“It doesn’t really matter at this point. Java is established enough to make its own path.”—Bruce Tate
“When Sun is doing such a good job, why disturb it?”—Raghu Donepudi
“No. If it would be open source then we [could] see many flavors of Java, which ultimately leads to problems like we are currently facing with application servers.”—Rahul Kumar Gupta
“Yes. The only reason that Sun is refusing to do so is because they think of Java as their own completely and they are using it to prop their company up.”—Jack Herrington
“On one hand the idea of open source is appealing because it may lead to more bugs getting fixed in a shorter amount of time. On the other hand it may result in forks, branches, and incompatible JVMs.”—Michael Pilone
“No. I do not believe a crowd of mediocre geniuses can replace the scientific minds of those who take care of the sanity of the basic concepts—of which most of the people are not even aware.”—Vlad Patryshev
“The involvement of the open source community would accelerate innovation and increase the platform’s competitiveness.”—Rod Smith (IBM)
“The main reason we need an open source Java is to ensure the vitality of the platform. Open sourcing Java is our insurance plan if something should ever happen to Sun.”—Ed Cobb (BEA)
“I think it should. ‘Open-source’ Java does not require Sun to do anything, it merely requires others to do something. Having an ‘open-source’ Java is inevitable. I would suggest that Sun embrace that inevitability and work to its benefit.”—Rob Gingell
“I really don’t care.”—Kyle Gabhart
8. If you could change one thing about Java, what would it be?
“At a lower level, Java needs code blocks, continuations, a more dynamic typing model, and a whole lot of features that make applications programming easier. You can’t enable everything with libraries.”—Bruce Tate
“Introspection [a class to examine the properties of a JavaBean] is too difficult and too heavy to use.”—Laurent Ploix
“The license.”—Greg Magnusson, founder of Cyborg Spiders Web Development
“A provision for memory management by the developers.”—Raghu Donepudi
“Add back in operator overloading.”—Jack Herrington
“Jar versioning is extremely necessary in Java right now. I can’t count the number of times I have had XML parsing library conflicts or logging library conflicts.”—Michael Pilone
“Class Object. For 10 years it has not changed. There’s plenty to add.”—Vlad Patryshev
“The Java platforms have become too complex. We believe the Java community needs to do a better job of addressing departmental and small-to-medium business needs in order to continue to grow, prosper, and succeed.”—Rod Smith (IBM)
“Java desperately needs a more robust module system. Currently, all we have is .jar files; the result is ‘.jar file hell.’ It’s too hard to describe a system of inter-connected modules today.”—Ed Cobb
“Things I wished had not been done with, or to, or around [Java] in the past: The several false starts on dates and time; the introduction of the politically correct but thoroughly unnecessary RMI/IIOP; autoboxing from the start.”—Rob Gingell
“The tie between classloading and the Java runtime type of an object is a mistake that we continue to pay for. You can’t really determine if your program is type safe at compile time. Further, if you are doing anything reasonably dynamic, you often have to guess at the right classloader for a given class.”—Jim Waldo
“Garbage collection is evil. [It] made it possible for poorly trained, sloppy coders to enter the industry.
“Other things Java needs: operator overloading, precompiler directives (#define, etc), the ability to separate declaration from definition (header files and source files), unique, non-native, machine identifiers (for licensing purposes).”—Michael Smialek
“Code-behind pages!!! The reuse and flexibility that ASP.NET and code-behind pages offer is tremendous. I would love to see JSP 3.0 go this direction.”—Kyle Gabhart
“I would prefer to use Java objects to access [an] OS than using JNI. Most of Win32/Linux API could be wrapped in Java.”—Alexi Jordanov, project leader for the OSGi technology company ProSyst Bulgaria
9. What has been Java’s single greatest gift to the software community?
The responses we received most often were platform independence, the Java platform and language themselves, and the community they created.
“Two things: it made garbage-collected languages acceptable to a wider audience, and the smart IDEs that have sprung up around the language.”—Jack Herrington
“Millions of students need not learn C++.”—Rob Gingell
“The establishment of standardized APIs that multiple vendors could implement. This competition to provide the best implementation of a standard interface has created a very dynamic industry with a strong drive to produce high-quality solutions.”—Kyle Gabhart
10. Will the Java language remain as vital as it has been the past 10 years or could a newer, more powerful language overtake it?
“Languages have a limited period of technical leadership. Java will be no different. At some point, it’s going to be interesting to look beyond Java.”—Bruce Tate
“When desktops and laptops are replaced by handheld devices, we may need a much simpler and more powerful language.”—Raghu Donepudi
“C# has the potential to crush Java. It’s a better language.”—Jack Herrington
“Microsoft is making an incredibly strong move with .NET. Owning the client side with the operating system, they have a huge advantage over Java.”—Michael Pilone
“At least several years may pass before the features that already are there get adopted by the programming world. For instance, it seems like not more than 5 percent of Java programmers can handle Java generics. How many can embrace Lock/Condition?”—Vladimir Patryshev
“The Java language will remain a language that plays an extremely important part in the evolution of the industry as the focus shifts to more architectural thoughts around interoperability such as service-oriented architectures.”—Rod Smith
“At some point, the limitations of the Java VM architecture might become too serious, but whatever new challenger VM comes on the scene is, it will have to be awfully good to displace the Java platform.”—Ed Cobb
“We can actually write many different languages, some of which may be radically different than the one we know as Java, and still keep the ABI [Application Binary Interface]. That’s why it will remain important for a long time.”—Rob Gingell
“Java will remain a potent force in IT but niche scripting languages will gain ground for certain kinds of things.”—Doug Tillman, Java and Python developer with Grainger.com
“No rational person that’s been in this industry for more than a couple of years truly believes that any one technology is immune to being overtaken by a newer, faster, or more efficient one.”—Kyle Gabhart
Happy 10th, Java
As diverse as the interests that inhabit the Java ecosystem are, the opinions about Java itself are equally mixed. (Click here to read what the Father of Java, James Gosling, had to say about it.) That’s a sign of vitality that bodes well for Java’s second decade—if the developer and installed base statistics aren’t proof enough.