Comments
Richard Davies wrote: The UK has a good crop of technology pioneers in cloud computing - for example ElasticHosts, FlexiScale, Flexiant, OnApp - and also some strong government initiatives such as G-Cloud. We will have to see whether this kind of technical leadership converts into swift mass-market adoption or not.
Cloud Expo on Google News

SYS-CON.TV
Cloud Expo & Virtualization 2009 East
PLATINUM SPONSORS:
IBM
Smarter Business Solutions Through Dynamic Infrastructure
IBM
Smarter Insights: How the CIO Becomes a Hero Again
Microsoft
Windows Azure
GOLD SPONSORS:
Appsense
Why VDI?
CA
Maximizing the Business Value of Virtualization in Enterprise and Cloud Computing Environments
ExactTarget
Messaging in the Cloud - Email, SMS and Voice
Freedom OSS
Stairway to the Cloud
Sun
Sun's Incubation Platform: Helping Startups Serve the Enterprise
POWER PANELS:
Cloud Computing & Enterprise IT: Cost & Operational Benefits
How and Why is a Flexible IT Infrastructure the Key To the Future?
Click For 2008 West
Event Webcasts
Java Development Tools in Transition
Java Development Tools in Transition

The tools available to the Java developer exhibit several unifying concepts, which provide a framework to explore the next transition in Java-development tools.

The first development tool that many Java developers use is the "javac" compiler that is bundled with the Java Development Kit (JDK). This compiler translates Java source code into the bytecodes that the Java Virtual Machine (JVM) executes. The "javac" compiler is not sophisticated, but it works and that's enough to get started.

Another tool that may be used is "java" or "jre", the runtime environments for the JVM. The JVM interprets the bytecodes generated by the compile to portably execute the compiled program.

At this point the developer has encountered two concepts. First, "javac" uses the notion of static analysis and static compilation to translate the Java language source code into the bytecodes stored in the class files. Second, the tools "java" and "jre" both use the concept of dynamic interpretation to drive the execution of the program.

To improve these tools we can add the concept of dynamic compilation. The latest releases of the JDK include a feature known as a Just-In-Time (JIT) compiler. A JIT allows the software developer to deliver the program in a portable format and to defer optimization until the bytecodes are dynamically compiled into machine instructions on the host computer.

The class files in the application are not all compiled - that would increase the delay between downloading the application and starting its execution. A JVM enhanced with a JIT can leave most of the program as bytecodes that are interpreted by the JVM; but when the JIT wants to optimize the execution of a section of the bytecodes, that section is dynamically compiled into machine instructions to increase the execution speed with a small compilation penalty.

The JIT model of dynamic compilation is great for clients that are executing different Java programs. But for servers which are always running the same Java program, it's occasionally better to compile the entire program into optimized machine code for the target machine. This introduces the next concept, native code compilation. Native code compilers are like the "javac" tool we started with, except that they usually employ sophisticated semantic analysis, sometimes with the feedback of dynamically calculated information, to generate optimized machine instructions. Since these tools are designed to be occasionally executed, and the resulting program executed many times, these compilers can afford to do the extensive analysis necessary to optimize the Java program.

We have seen that as Java development and execution environments improve they usually incorporate increased usage of dynamic analysis techniques. This union of the compilation and execution models enables breakthrough tools which can take advantage of dynamic techniques in exciting new ways. Tools like profilers, feedback driven byte-code optimizers, memory leak detectors, or tools for source code coverage analysis are made possible when dynamic analysis is considered.

As an example of a novel application of dynamic analysis, consider the problems inherent when writing multithreaded Java programs. The Java runtime is inherently multithreaded, and Java supports explicitly multithreaded programming through the definition of a standard Thread class. But with this power comes a price. It's extremely difficult to prove that a multithreaded program is thread-safe, without making it inefficient by over-synchronizing all of the classes.

By using the concept of dynamic analysis, tools for multithreading defect analysis can be built to determine which objects are not correctly synchronized in the program and if the usage of the synchronized objects could cause the program to deadlock. Safe, correct, multithreaded programming in Java is practical and easy with tools based on dynamic analysis that provide a safety net to find overlooked problems.

The compilation, analysis and execution tools for Java have evolved to encompass both the static and the dynamic modes of operation. The Java developer gets the advantage and benefit of this symbiosis in Java's advanced development environments.

About Paul Petersen
Paul Petersen is a lead developer for KAI's Assure.

In order to post a comment you need to be registered and logged in.

Register | Sign-in

Reader Feedback: Page 1 of 1

Latest Cloud Developer Stories
Swisscom, the Swiss telecom, is going into the cloud business. Its subsidiary Swisscom IT Services AG has signed up with Red Hat as a Certified Cloud Provider and launched a public cloud Infrastructure-as-a-Service (IaaS) cloud targeting enterprise-class customers primarily in ...
Apache Deltacloud, the Red Hat-contributed ReSTful API that abstracts differences between clouds so services on any cloud can be managed – provided of course there’s a driver – has graduated from the Apache Foundation’s incubator and is now a full-fledged Top-Level Project (TLP)....
In a surprise move on Tuesday, January 10, Oracle wheeled out its Big Data Appliance. That’s the one it said in October would be ready sometime in the first half. Only nobody believed it meant early in the first half. Heck, it’s not even clear anybody thought Oracle could make ...
Rackspace Hosting, the service leader in cloud computing, on Thursday announced its acquisition of SharePoint911, an industry leader in SharePoint consulting, training, and "JumpStart" services within SharePoint. The unification of both companies provides capabilities to deliver ...
CloudLinux, Inc., on Thursday released CafeFS 3, a virtualized file system for shared hosters that cages each customer within its own virtualized file system. CageFS becomes part of CloudLinux OS at no additional charge. CloudLinux OS, the only commercially-supported Linux OS m...
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021

SYS-CON Featured Whitepapers
ADS BY GOOGLE

Breaking Cloud Computing News

The Khronos™ Group, an industry consortium creating open standards for the accelera...