Site Archive (Complete)
Java
ERIC BRUNO'S BLOG

Java: The Daily Grind.

by Eric Bruno

February 2007


February 25, 2007

Is Steve Jobs right about Java?


After Apple’s iPhone announcement, Steve Jobs blasted Java during interviews.

In an interview with David Pogue of the New York Times, Steve Jobs said that the iPhone will not be shipped with Java because it’s “a big heavyweight ball and chain that no one is using anymore.”

The first reaction amongst many in the Java community might have been outrage. After all, there are many passionate Java developers out there. (In fact, I’ve heard through the grapevine that James Gosling, a longtime Mac fan, has swapped out his MacBook Pro in favor of a notebook running Solaris 10. That’s only a rumor of course.)

However, although I’m passionate about Java, I wasn’t upset by the comment, nor was I angry at Steve Jobs. And I’m certainly not going to abandon my Mac. Instead, I decided to analyze his remarks; Steve isn’t one to say something in the press unless he feels strongly about it. My opinion is that he’s both right and wrong.

He’s wrong, obviously, in that developers are certainly still using Java to create new and innovative solutions. But he has some points with the “bloated” remark if you compare Java to Ajax technology on the client (web browser). If the iPhone does indeed ship with a fully functional Safari browser as Steve announced, then it’s a simple matter of sending some extra bytes of JavaScript down with your HTML page to get a dynamic web application, as opposed to downloading a Java application, applet, or Java Web Start component. When compared to a browser with dynamic HTML and XML support built-in, Java doesn’t stand a chance against JavaScript in terms of size and ease of deployment.

However, this isn’t true in all cases. One industry heavyweight (Google) is using Java for its mobile email clients. Sun’s CEO Jonathon Schwartz made this clear to Steve Jobs personally, as mentioned in this video interview.

Google’s not the only one; I personally use a Java ME application on my RAZR to access my Yahoo email account. Looking at this further, you need to remember that Java ME is currently installed on billions of existing, and newly shipping, cell phones and other mobile devices all over the world. The reason developers, cell phone manufacturers, and carriers like Java is because it has become a standard. Simply write your application in good old Java, and you instantly have a market on billions of cell phone clients world wide. There’s an enormous amount of opportunity there that developers would be foolish to pass up.

Because of Java’s write-once-run-anywhere mantra, you can be assured that the application will run mostly as you intended it to on all of these devices. As for the manufacturers that put Java ME on their devices, they even have choices. You can install CLDC with the Java KVM, which literally means the JVM is only kilobytes in size. Or, alternatively, you can ship with CDC (http://java.sun.com/products/cdc/index.jsp), which requires a little more room, but offers some richer features for the developer. Recently, since devices are getting more powerful, Sun has started pushing Java SE embedded as a choice. This puts mobile devices potentially on par with the version of Java SE you and I use daily on our desktops (Mac, Windows, Linux, or Solaris – an example of choice and flexibility in its own right).

With Java already on billions of mobile devices, some of which are just as powerful as desktop computers from only a few years ago, suddenly Java doesn’t look like the ball and chain Steve Jobs described it as. Instead, it looks like a huge community and economic opportunity that Apple will be missing out on. Or, more likely, it’s a huge opportunity for some third-party company that decides to build and sell an iPhone-specific version of Java SE embedded.

What's your opinion on this whole matter? Is Java big and bloated? Would you like to see Java on Apple's iPhone? After all, developers have quite a lot of power when it comes to technology direction.

-EJB

Posted by Eric Bruno at 10:46 PM  Permalink |


February 16, 2007

More on Java SE 6 Management and Desktop Features


In three recently published articles on Java SE 6, Sun describes, in detail, how to use the new desktop integration and VM management/monitoring features.

Java Management/Monitoring

Java ships with many command-line utilities that offer monitoring and management facilities that are crucial to mission-critical application developers. In many cases, the utilities can dynamically attach to running Java applications. When this happens, probe points are dynamically inserted into the running process, and then are removed when the monitoring tool exits. As a result, you can monitor applications running in production, in their production environment. There are absolutely no performance penalties when the application is not be monitored or diagnosed, and no special compiler options are needed.

To read more about these features, check out the following:
Managing Applications With Java SE 6
Java SE 6 Monitoring, Management, Diagnosability
Java SE 6 Troubleshooting Guide

Additionally, with each release of Java, more DTrace probe-points have been built into the Java VM. DTrace is a utility for Solaris that allows you to trace an application call from the beginning application code, through the application and system libraries that are used, through the OS and kernel, device drivers, and eventually right down into the hardware itself. Soalris’ DTrace is such a powerful tool that developers are adopting it for other operating systems as well. Specific Java VM DTrace probe-points allow you to perform this comprehensive application debugging from your Java applications as well.

Java SE 6 Desktop Integration

A two-part article published this week on java.sun.com details the many desktop integration features that were introduced with Java SE 6. The article shows screen shots as well as sample code to describe exactly what each feature does.

For instance, there are features to do the following:

-Splash screens: build application start-up splash screens that are displayed immediately when a Java application is executed.
-System tray: access the system tray of Windows or Linux to add icons, pop-up menus, or floating tip bubbles.
-LCD monitor tuning: optimizations and anti-aliasing for LCD displays to increase resolution and text readability.
-Improved Swing and OpenGL graphic rendering: performance-relating improvements
-Native look and feel: better integration with the host OS look and feel, such as following the system theme.
-Image rendering: performance improvements in the Image IO APIs.
-Window Modality: the ability to display a dialog box that blocks input from other application windows (or all windows in a single VM) until the user answers a critical question, or inputs a required value.
-The Desktop API: interact with the host system to open web browser instances, launch the default email client, open the application associated with a particular file type, and print to system printers.

For details, read the two-article on java.sun.com:
New and Updated Desktop Features in Java SE 6, Part 1
New and Updated Desktop Features in Java SE 6, Part 2

Happy coding,
EJB

Posted by Eric Bruno at 09:28 AM  Permalink |


February 13, 2007

Java, Web 2.0, and Solaris


I spoke with Dan Roberts at Sun Microsystems, and he told me all about the new Web 2.0, Solaris, and Java support programs for developers being introduced today.

Sun is releasing a new developer-oriented version of OpenSolaris, called Solaris Express, Developer Edition. Although Solaris Express has been around for a while, it’s mainly aimed at those who contribute to the OpenSolaris project. There are weekly builds, and although the code is the latest and greatest, not all of it is put through a rigorous QA cycle. That takes time.

The Developer Edition of Solaris Express, however, is a quarterly release of the latest snapshot of the OpenSolaris project, specifically aimed at Solaris application developers (both Solaris 10 and OpenSolaris). Sun puts each release through a preliminary QA cycle to ensure stability, and it includes the latest in developer tools, such as:

- NetBeans for Java and Web 2.0
- Sun Studio for C/C++
- AMP Releases: Apache Tomcat, MySQL, PostgresSQL, PHP, and Perl
- The latest JDK
- The latest version of Glassfish, the open-source Sun Java Application Server
- The latest in GUI desktops
- DTrace with the latest probe-points for the OS and all of tools released with it (including the AMP stack).

The Startup Essentials program has been upgraded as well, with expanded hardware deals that now include low-end SPARC systems and storage system offerings. This is in addition to the AMD-based systems that were available previously. You can choose from many standard configurations and receive up to a 60% discount off the price and, in many cases, receive the hardware within 24 to 48 hours. Custom configurations are available as well, but delivery dates will vary.

Finally, new developer services have been introduced for the new hardware and software stacks. Developers can receive specialized advice for programming issues on a per-request basis with guaranteed response times through Sun Developer Expert Assistance Service. The service is available to all developers with a cost of $49 (USD) per request or unlimited requests for an annual subscription cost of $249 (USD). Sun Developer Expert Assistance Service provides global, round-the-clock e-mail-based support on Sun software. More information is available at http://developers.sun.com/services, the comprehensive location for developers to discover all the Sun support and training options.

Posted by Eric Bruno at 08:02 AM  Permalink |


February 05, 2007

Klocwork Releases Source-code Analysis Tool


On January 29th, Klocwork (klocwork.com) released a unique tool to detect defects and security vulnerabilities in source code.

The Klocwork Developer for Java (KDJ) is available as an Eclipse plug-in to seamlessly integrate with the most common Java developer environment. The goal of the plug-in is to provide static code analysis with the ability to do the following:

- Detect critical Java defects: detect hundreds of defects, including array bound violations, null object dereferences, resource leaks, and so on.

- Detect security vulnerabilities: detect potential security issues such as cross-site scripting, SQL injection, process creation injection, and vulnerabilities from the Open Web Application Security Project (OWASP) top 10 list.

- Reduce the footprint of Java applications

What I particularly like about the product is that Klocwork looked at other static source-code analysis tools, and studied developer psychology when dealing with them. The result is a well-thought out, and extremely useful, product. For instance, one common complaint with other analysis tools is the amount and verbosity of the output. You tend to get overwhelmed with trivial issues that the real problems become buried in output that must be combed through. One of Klocwork’s goals was to eliminate this issue.

The KDJ includes features that allow you to focus the analysis on all, or just portions, of your code. Simply right-click on an Eclipse project, a group of files, or a single file within it, and choose to analyze your code. A lot of effort was spent to ensure that the resulting analysis is accurate, thereby eliminating the useless or outright wrong information seen with other tools. Further, the KDJ provides a ranking of issues which allows you to focus on the top-priority problems or vulnerabilities first. You can re-rank certain issues as you desire; filter out results to focus on issues important to your specific project; and flag inaccurate results to ensure they don’t come up in the future.

State is maintained with each reported defect or issue. Therefore, if you re-rank a particular issue, that fact is remembered each time you perform the analysis, even if code changes are made to the particular project or file. When the time comes to address the issues reported, comprehensive help is available for each issue/defect type, along with suggestions to help fix the problem or vulnerability. I was particularly impressed with this feature as it went into good detail, and provided useful information and code samples.

Klocwork offers versions of the KDJ for both Java and C++. There are Developer and Enterprise offerings that provide different feature sets at two different price points. Additionally, there is a 30-day trial download available for the Java Developer edition. Try it for yourself and see if you agree that this product is a unique, useful, and necessary addition to your toolkit.

-EJB

Posted by Eric Bruno at 09:25 AM  Permalink |



November 2007
Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  


BLOGROLL
 
INFO-LINK


Related Sites: DotNetJunkies, SD Expo, SqlJunkies