Site Archive (Complete)
Java
ERIC BRUNO'S BLOG

Java: The Daily Grind.

by Eric Bruno

September 2006


September 30, 2006

Apache Software Updates


Here are some recent open-source updates from Apache.

Apache Nutch 0.8.1

Nutch is an open source web-search software package. It builds on Lucene Java (an open-source search engine) and adds web-specific functionality, such as a crawler, a link-graph database, parsers for HTML and other document formats, and so on.

The 0.8.1 release of Nutch is now available. This is a bug-fix / maintenance release to the 0.8 branch. See the list of changes made in this version. The release is available here.

Apache Muse 2.0.0

The Apache Muse Project is a Java-based implementation of the WS-ResourceFramework (WSRF), WS-BaseNotification (WSN), and WS-DistributedManagement (WSDM) specifications. It's a framework upon which users can build web service interfaces for manageable resources without having to implement all of the "plumbing" described by the standards.

Apache Muse 2.0.0 is now available. This version was developed on a new code base and has the following feature set:

- Implementation of all WSRF 1.2, WSN 1.3, WSDM 1.1, and WS-MetadataExchange port types.
- A small, standalone implementation of the WSDM Event Format 1.1.
- Compliance with WS-Addressing 1.0 and SOAP 1.2. Deployment within Apache Axis2 1.1 and OSGi-based platforms.
- Common programming model for definition of resource types across the different host platforms.
- Separate packaging of APIs and implementations; this allows alternate implementations of Muse interfaces (for WS-* portTypes and concepts) to be loaded without including unused code.
- Aggregation of Java bean classes into a single state model for WSRF (no XML serialization on your part).
- Lots of utility APIs for common tasks associated with resource properties, service groups, relationships, publish subscribe scenarios, and resource introspection.
- Automatic XML serialization of complex types via XStream.
- A WSDL-to-Java client generation tool.
- A persistence API so that users can recover the state of a WS-resource after shutdown of the host.
- Complete WSDL-to-Java tooling that parses WSDL and creates both service and client-side code and artifacts.
- Continued dedication to 100% compliance with ratified standards

Posted by Eric Bruno at 06:44 PM  Permalink |


September 29, 2006

Java Dead on the Client?


I’ve been reading some blogs and various articles lately about Java, and I’ve noticed a lot of talk about Java being dead on the client.

You can read this article as an example. However, you need to define “client.” Is it a Windows-based PC, or the billions of mobile devices that run Java applications?

If you define a client as a Windows-based PC, I’d still argue that Java is alive and kicking. One look at Eclipse, itself written in Java, proves how successful a well developed Java client application can be. Perhaps you can argue that since Eclipse is a platform for Java development, the writers felt obligated to build it in Java. I disagree. The Eclipse team has been very successful at getting high-quality Eclipse releases out the door at a quick and steady pace. This is due in part to Java, and to the development process the team has put in place (also see the full development process document).

If you define a client as a mobile device, Java dominates the client. With Java ME and the Java Toolkit for CDC, you have access to the Java Swing and 2D APIs, along with AGUI, a big GUI advancement, which recently has been finalized. Thanks to Java, I can access email, send and receive IMs, get stock and news updates, or play a game of Sudoku on my cell phone when I’m away from my desk.

Although Java has much room to grow on Windows desktops, a lot is happening with Java on the client side, whether it’s a Windows desktop or a mobile device. Advancements have been made in Java SE with improvements to both Swing and the Java 2D APIs that have strengthened Java’s GUI performance.

Before we give up on Java on the client side, perhaps we should focus on helping to make it a viable alternative to .Net for client application development. Competition is always good, and the power to innovate is in your hands. Sun opened up the development of Java two years ago (well before the open-source announcement) so that developers around the world could help to steer Java in the right direction.

Let me know if Java has helped, or has let you down on the client side. Write me through the blog feedback below, or at eric@ericbruno.com. Share your Java client application development stories with me and your fellow reads at DDJ, and perhaps together we can make a difference.

-EJB

Posted by Eric Bruno at 09:29 AM  Permalink |


September 20, 2006

Why do you use Java?


Java took off in the mid-nineties mainly because it’s an OS-neutral platform, not just because of its language features.

As a language, Java is very similar to C++. In some ways, it’s too similar, as with Java’s support for primitives. Ideally, everything would have been an object in Java, and no primitives would have existed. But in an effort to attract C++ developers at the time, primitives were left in the language. In fact, if you look at C++ as a meta-language, Java can be considered an implementation of it; albeit a better one considering the use of garbage collection, and the omission of pointers.

Again, it’s the fact that Java is more of a platform than a language, freeing developers and corporations from the shackles of the OS, which led to its wide-spread adoption. When it comes right down to it, no one should ever care about the OS – it’s the applications you need to run, and their associated data, that matter most. The lure of browser-based applications (regardless of whether the application is a Java applet within the browser or a Java Servlet within the web server) and the freedom of having them run anywhere led corporations to adopt Java in droves.

My initial attraction to Java was the fact that it was similar to C++ (the language I was developing in at the time) and that I could deploy my Java applications anywhere a JVM could run. Hence, my learning curve was low, but the freedom and benefits of using Java were great.

But where does Java’s value truly exist? Is it in the language, or in the virtual machine (VM)? Just as many developers looked at Java as an implementation of the C++ meta-language in the mid-nineties, many developers today are looking at Java’s VM as an OS-neutral platform for languages in addition to Java. Sun’s recent hiring of prominent JRuby developers shows that, perhaps, Sun sees it this way also.

Java seems to be transforming from a language, into a platform of its own. Perhaps in the near future, we’ll refer to the Java virtual machine (JVM) as Java’s virtual machine for (your language here), such as:

- Java’s VM for Ruby (JRuby)
- Java’s VM for Python
- Java’s VM for PHP
- Java’s VM for Java
- and so on…

If this happens, the result will be that the Java platform will allow you to choose the language that works best for you, and for the task at hand, while it still provides the same OS neutrality that launched it into the mainstream ten years ago. Just imagine having all of that power, freedom, and choice on all of the desktops and mobile devices that Java exists on today. Respond to this blog entry and let me know how you would make use of the Java platform if it supported more languages in the future.

-EJB

Posted by Eric Bruno at 09:20 AM  Permalink |


September 18, 2006

Java SE 6 Previews for Mac OS X


The Java SE 6.0 Release 1 Developer Preview 6 is now available Mac OS X, Intel, and PowerPC.

The Java SE 6.0 Release 1 Developer Preview 6 is now available for Mac OS X, Intel and PowerPC. This latest developer preview is available from the Apple Developer Connection to all ADC members, including those at the free "online" level. Note that ADC pre-release terms and conditions still apply, meaning the build can only be discussed on Apple's feedback channels. Also note that this preview release is not removable.

JNIEasy for Linux

JNIEasy, from Innowhere, creates a new paradigm, called Java Native Objects (JNO), to bridge Java and C++ software using only Java POJOs. It attempts to completely abstract JNI and its complexities, and appears to do a very good job. On September 12, Innowhere announced the x86 Linux version of JNIEasy.

Cetia4 REST Framework

The REST architecture has become increasingly popular in the creation of flexible web service applications and SOA-based systems. The Cetia4 REST Framework uses a simple but powerful abstraction that allows for the easy creation of a Java Servlet-based application that can work as:

  • a web application that may be accessed by a typical web browser or any stateful web-enabled client
  • a REST web service application that may answer HTTP stateless requests.

Check out the Cetia4 site to download the latest framework, and to get involved in expanding its functionality and usefulness.

-EJB

Posted by Eric Bruno at 09:47 AM  Permalink |


September 12, 2006

Should Java have Closure?


James Gosling recently wrote in his blog about turning his focus towards Dolphin (to be Java SE 7) and the debate around Java Closures.

You should read James Gosling's recent blog entry Block Hole Theory of Design. In particular, he talks about a language construct called closures. I must be honest; I didn’t entirely remember what a closure was when I first read the blog, but my memory was restored when I looked it up on Wikipedia.

A closure is formed when a function (or class method in the case of Java) is declared and defined entirely within another function, and the inner function accesses local variables declared within the outer function. According to Wikipedia, closures are commonly used in functional programming to defer calculation, to hide state, and as arguments to higher-order functions.

So why would you want closures in Java? First, it allows you to pass an entire function as a parameter to another function. Second, it replaces anonymous inner classes which have the restriction of requiring all local variables declared outside the inner class to be defined as final if they are to be accessed within the inner class. Without this requirement, an anonymous inner class would come close to being a closure in Java.

But a closure is really a standalone function that is represented and treated as an actual object of its own. If such an object is allowed to live on after its contained method returns, you may run into problems as the memory it attempts to access may no longer be in scope. Remember, this memory is used by local variables declared outside of the closure. Most likely this memory will need to be tracked to avoid garbage collection until the closure itself loses scope and is itself a candidate for garbage collection. It gets complicated, and there is a debate taking place now as to whether closures are worth the trouble of implementing in the Java VM.

Read this post for an excellent discussion on closures in Java. Additionally, you can take part in the closure debate (and in effect, bring closure to closure), by following the polls, blogs, and other bits information on Java.net, and some other sites:

- JDK 7 Closure Poll Results
- Java? Ruby? Both
- Getting Groovy with XML
- Closures and Java: A Tutorial

Let me know what your feelings are on closures in Java by replying to this blog entry below.

-EJB

Posted by Eric Bruno at 09:24 AM  Permalink |


September 08, 2006

JRuby and Java SE 6 News


Java SE 6 slips, and JRuby programmers join Sun.

Java SE 6 Slips

Mark Reinhold has announced that JavaSE 6's shipping dates are being moved back. Mark explains, "Unfortunately about fifty showstopper bugs remained after build 96, and the incoming bug rate is a bit higher than we’d like, so the freeze date was moved out two weeks to build 98 (last Friday) and two additional weeks of testing were added. Nobody likes schedule slips, but shipping a high-quality release is more important than hitting a particular date. (In a future entry I’ll talk more about what constitutes a 'showstopper.') With these changes the release candidate will now ship at the end of October and the final release will ship in the first week of December."

Sun Hires JRuby Core Developers

Rich Green, EVP of Software at Sun announced on September 7, as part of his keynote at Sun Tech Days in Seattle, that Charles Nutter and Thomas Enebo, the chief maintainers of JRuby (Ruby on the JVM) will become Sun employees this month. They'll be working full-time on JRuby and in particular paying attention to developer tools.

Sun believes the Java platform is bigger than just the Java language and we support giving developers a choice. Sun is planning to support multiple languages on the Java platform; plus, they will be working toward interoperability between the Java platform and other languages. Charles and Thomas will be helping in these efforts.

For more information, check out Tim Bray's blog, Charles Nutter's blog, and Tor Norbye's blog.

-EJB

Posted by Eric Bruno at 10:28 AM  Permalink |


September 06, 2006

Java Navigation Systems


Software solutions are available to turn your cell phone into a mobile navigation system.

Appello, for instance, has developed a Java ME navigation application that runs on any Bluetooth-enabled cell phone. Their product is called WISEPILOT, and it works by communicating with a small GPS unit via the cell phone’s built-in Bluetooth radio. It offers trip planning and other trip-related information by sending SMS messages to Appello’s back-end servers. Additional features include real-time traffic reports, and the ability to enter a person or company name instead of an address to activate the navigation system. Because of its integrated directory services, WISEPILOT will locate your destination’s address for you, and then give you turn-by-turn directions starting from your current location, taking into account traffic data it has obtained. Nice.

To read more about how Java helps make useful applications like this possible, read this article from Sun.

windRose has recently released their own navigation system for Java-enabled cell phones. Their trip-planning software is open-source, and targets devices with Bluetooth also. Although Java enables the software to run on any Java-enabled Bluetooth device, they have currently tested it with the Palm Treo 650.

Vendors are choosing Java ME for their mobile application development because it allows them to write their code once, and then target any Java-enabled cell phone on the market (which is just about all of them).

-EJB

Posted by Eric Bruno at 09:40 AM  Permalink |


September 01, 2006

Mashups, SQL, and Java Futures


Build mashups with portlets; browse SQL DBs; and see the future.

Sun recently posted a new article on building Ajax-enabled mashups with Sun Java System Portal Server 7.

Mashups are gaining interest as more companies such as Google, Yahoo, Amazon, and eBay offer web-service APIs to their core data. To build a mashup, you need access to a minimum of two data sources that can be combined to create a service, which is not otherwise available from either source.

This article discusses how Java Portal Server makes it easy to build Ajax-enabled mashup portlets. Portlets themselves can then be arranged and rearranged into new web applications, in a sense providing a mashup of mashups. Better yet, Sun has created an open source portlet repository on Java.net where you can download available portlets, contribute your own, and discuss portlet and mashup issues with a community of developers like you.

Sun Java System Portal Server 7

Sun’s Portal Server a very complete product that not only supports portlet development and deployment, but the following features as well:

• Identity-based content delivery
• Wikis
• Surveys and polls
• Mobile access
• Interportlet communication
• Text and federated search with taxonomies
• Java Studio Creator IDE integration

Eclipse SQL Explorer

If you’re looking for a tool to visually browse and query your JDBC-compliant database, the newly released Eclipse SQL Explorer is for you. Not only does it support any JDBC-compliant SQL database, it comes with plugins with specialized support for Oracle, DB2, and MySQL. You can also extend it yourself to provide specialized support for any other JDBC database you might use.

The Future of Java

I recently wrote a three part article series on the future of Java. The articles discuss Java’s moves in the consumer space, the future of Java on the desktop and in the enterprise, and include interviews with key people within Sun, such as Mark Herring, Ray Ganns, and Mark Reinhold. You can read each of the articles through these links:

The Future of Java: Part 1
The Future of Java: Part 2
The Future of Java: Part 3

Posted by Eric Bruno at 11:16 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