Effort on the
edge, Part 1
Tutorial Details:
Effort on the edge, Part 1
Effort on the edge, Part 1
By: By Sonali Shah and Frank Sommers
Does the JCP adequately balance innovation with maintenance of Java's standards?
onsider the familiar pattern: As a technology matures and as organizations increasingly invest in that technology, the need to preserve its common standards and practices also increases. The status quo sets in, as that technology's major stakeholders grow progressively more unwelcoming to innovative ideas. As innovation finds other outlets, the technology grows less relevant and, with time, goes the way of the dinosaurs.
Has Java reached that stage already? Or is Java just now starting to really take off? Those are fair questions considering Java has enjoyed seven years of growth as a programming language and environment. Java has about three million active developers, has gained acceptance as a staple of the enterprise computing landscape, and has become the lingua franca of university computer science curricula. With all this success, has Java reached its zenith? Or will the language's success evolve into a nonlinear explosion of further adoption and ubiquitous use?
These questions prove especially timely as Sun begins to loosen its reins on Java. It used to be that Java meant Sun Microsystems?that all progress in Java depended on Sun's support and endorsement. Those who still believe that see a cloudy future for Java, with Sun's sagging revenue growth and, hence, impaired ability to financially back the technology. In a recent interview with CBROnline, Java inventor and Sun Fellow James Gosling admitted this much: "It's hard to criticize [the C sharp language] because it is such an obvious [Java] clone. The real threat from Microsoft is [that] they can out fund us. They fund developers...Sun is not in a position where we can buy partners" (from " Gosling: Microsoft's Java Threat is Financial, Not Technical ," Gavin Clarke (October 4, 2002)).
Whatever Sun's future holds, the company no longer wields sole sway over Java's direction. Over the past four years, the company has quietly shepherded Java's growth and has vested increasing control over the language's future with Java community members through the Java Community Process, or JCP.
The JCP's key role is to define and maintain the specifications that define Java. You become a JCP member when you sign the Java Specification Participation Agreement, or JSPA , thereby agreeing to follow the JCP's rules and regulations. Rob Gingell, Sun's chief engineer and fellow, who chairs the JCP, notes that presently 58 percent of Java specification requests, or JSRs, are led by Java community members that are not Sun employees. If that trend continues, Sun will have less and less say over Java. Simultaneously, Java's future will depend more on the JCP's effectiveness.
Since constant innovation is the only known antidote to going the way of the dinosaurs, how effective is the JCP when it comes to innovation? Or, is the JCP friendly to new ideas that raise Java to the next level? Does it frown upon truly original, radical thought and favor instead small, incremental change to what already exists in Java? And, most important: Why would an innovator need a community process?
Read the whole series "Effort on the Edge:"
Part 1: Does the JCP adequately balance innovation with maintenance of Java's standards?
Part 2: A fact-based analysis of the JCP's effectiveness
It's all (about) toast
To see the rationale for a community process, put yourself in the shoes of someone wanting to introduce innovation into Java. Or, better yet, imagine yourself in that person's bathrobe.
One autumn morning, as the scent of freshly brewed java awakens you, you head for the kitchen and toss two thin slices of sourdough into the toaster. In a few short minutes, instead of the familiar smell of toasted bread, a thin layer of smoke billows over the room. You sigh in frustration as you realize your roommate adjusted the toaster to its ultimate power!
Then comes an idea: If the toaster were controlled by software that knew your preferences, you could now be spreading Grandma's marmalade onto two perfect pieces of toast instead of tossing their carcasses in the garbage. And if toaster ovens came with embedded JVMs, you could design an API for toasters in Java! With that thought, you rush to sketch a preliminary design for your new idea?an API for Java-enabled toasters.
Necessity and curiosity not only are the architects of innovation, but, according to open source guru Eric Raymond, also are the originators of many a successful software project: "Every good work of software starts by scratching a developer's personal itch," he says. If that burned toast made you itch or perhaps wrinkled your nose enough to start thinking about a solution to the problem, then you're on your way to becoming the solution's originator?an innovator.
But wait...don't large corporations and universities lead real innovation? After all, an individual developer with a whiteboard design seems a long way from millions of toaster ovens warming bread with the same API. How can an individual with an idea about a Java technology see his vision become reality?
The answer to that question will shed some light on Java's future. Since all modern programming languages and environments define Turing-complete systems, you can choose any of them to implement your ideas?C#, Visual Basic, Python, C++, Perl, Delphi, COBOL (Common Business Oriented Language), and so forth. Some are more conducive to certain tasks than others; some are also more conducive to innovation than others. In seeing your innovation become reality, you want to implement it using a technology that's most friendly to new ideas in general, one that provides the least roadblocks and ensures your idea's broadest dissemination.
A dangerous waterhole
Back to your idea, you develop a preliminary sketch on a whiteboard, or on the back of a napkin or envelope, for an API to control toasters programmatically. Regardless of how you come up with your first design, you quickly realize that your initial sketch might not represent the best possible blueprint for a toaster API. After all, you're a software developer, not a toaster expert. So, as soon as you get to your office, you look up leading toaster experts on the Web and fire off some emails: Would they be interested in participating in the toaster API's design? Do they even think such an API is a good idea?
Soon enough, some of those experts reply: "Yes, it's a great idea, the best one since the invention of sliced bread." They agree to work with you and provide input into your design. Thus, your original idea leads to a process that defines a feasible technical solution. That process's result would be a set of guidelines or specifications. You also need to decide who can use those specifications, and how: in other words, you need to develop your licensing policy.
At that point, you encounter your first dilemma: Your toaster experts all work for competing companies. How can they cooperate on a common API, when they represent cutthroat competitors in the marketplace?
Two leading experts on open source communities, Richard Gabriel and Ron Goldman, produced " The Jini Community Pattern Language " in 1998, when the Jini community was in its infancy. They aimed to isolate the factors needed to create a new community and marketplace for innovative software ideas. They borrowed the notion of reusable, object-oriented design patterns to describe how a community interested in a common solution might work, even when competing companies are members of that community.
The Dangerous Waterhole pattern illustrates why competitors might want to cooperate in a process to develop a new technology or standard. Imagine a watering hole in a jungle. Animals eye the hole from a distance, but not one goes forward, lest it fall prey to another beast lurking behind the trees. But once an animal large enough or otherwise immune from sneak attacks descends on the watering whole, other animals soon follow suit.
A similar pattern might draw the world's biggest toaster manufacturers to the same watering hole. However, they're unlikely to initiate a common API standard on their own; why would competitors follow one company's proposal? Thus, little progress is made, until you, a neutral third party, come along and invite those companies to work together. A competitor refusing to join risks having its interests ignored.
The iterative JCP process
At its best, the JCP is such a waterhole for those interested in advancing Java. It provides a forum for proposing and discussing changes to Java, and offers a clear blueprint for how those changes take effect. In a nutshell, that process is quite simple:
Any JCP member can propose a new specification by completing a form, the JSR. The JCP executive boards then either approve the JSR for further development or reject it. The JCP has two such boards: one oversees those JSRs that affect J2SE (Java 2 Platform, Standard Edition) and J2EE (Java 2 Platform, Enterprise Edition), and the other directs work on J2ME (Java 2 Platform, Micro Edition)-related JSRs. Each executive committee (EC) consists of 16 members, some of which are elected by the popular vote of all JCP members, while others are nominated by major Java licensees and ratified by public vote. In addition, Sun is a member of both ECs, and has special privileges and input into JSRs that propose to change the J2SE/EE/ME platforms themselves ( umbrella JRSs ).
Suppose you proposed a JSR, "Java API for toasters," which likely relates to J2ME. After the J2ME EC approves it for further development, you form your expert group and together develop a draft proposal. You, or another expert group member, acts as the specification lead. Once you complete a first draft, you make it available for review by all JCP members. During that stage, which may last from 30 to 90 days, any JCP
Read
Tutorial at: Click here to view the tutorial
Rate Tutorial: Effort on the
edge, Part 1
View Tutorial: Effort on the
edge, Part 1
Related
Tutorials:
Image processing with Java 2D - JavaWorld - September
1998
Image processing with Java 2D - JavaWorld - September
1998 |
Use JDBC for
industrial-strength performance, Part 1 - JavaWorld January
2000
Use JDBC for
industrial-strength performance, Part 1 - JavaWorld January
2000 |
Programming XML in Java, Part 1 - JavaWorld March 2000
Programming XML in Java, Part 1 - JavaWorld March 2000 |
Activatable Jini services, Part 2: Patterns of use
- JavaWorld
October 2000
Activatable Jini services, Part 2: Patterns of use
- JavaWorld
October 2000 |
Survival of the fittest Jini services, Part 1 - JavaWorld April
2001
Survival of the fittest Jini services, Part 1 - JavaWorld April
2001 |
Clean up your wire protocol with SOAP, Part 3 - JavaWorld June
2001
Clean up your wire protocol with SOAP, Part 3 - JavaWorld June
2001 |
Add ghosted drag
images to your JTrees - JavaWorld
Tips
Add ghosted drag
images to your JTrees - JavaWorld
Tips |
Web services hits
the Java scene,
Part 1
Web services hits
the Java scene,
Part 1 |
I want my AOP!, Part 1
I want my AOP!, Part 1 |
Connect the
enterprise with the JCA, Part 2
Connect the
enterprise with the JCA, Part 2 |
Will Big Blue
eclipse the Java
tools market?
Will Big Blue
eclipse the Java
tools market? |
Rumble in the
jungle: J2EE versus .Net, Part
1
Rumble in the
jungle: J2EE versus .Net, Part
1 |
Jini's relevance emerges, Part
2
Jini's relevance emerges, Part
2 |
Effort on the
edge, Part 1
Effort on the
edge, Part 1 |
Get the inside
track on J2EE architect certification
Get the inside
track on J2EE architect certification |
JGraph - The Java Graph Diagram Component
JGraph - The Java Graph Diagram Component
JGraphAddons is a drop-in functional module that adds powerful and configurable layout algorithms to your existing JGraphs. They include hierarchical, circular and tree layouts capable of giving your JGraph app |
Strut your stuff with JSP tags
Learn how to use the custom tags from the open source Struts library and create extensions that ease the coding of properties associated with field values and user input validation. The Struts package is part of the open source Jakarta project. |
Biological Databases Links
Biological Databases Links
Biological Databases
Biological Databases are like any other databases. Biological Database contains the sequence data of DNA, RNA etc.. These database are organized for optimal retrieval and analysis.
Here are the |
What is Persistence Framework?
What is Persistence Framework?
What is Persistence Framework?
A persistence framework moves the program data in its most natural form (in memory objects) to and from a permanent data store the database. The persistence framework manages the |
Sun\'s Channel Program to Drive Sales of AMD Opteron Processor-Based Systems
The new SOLAR Edge Elite program is designed to drive sales of AMD Opteron processor-based systems into Sun\'s largest customers, delivered by Sun\'s expert Solaris OS partners. |
|
|
|