Security

JOLT Winner

Guice (Google)

(left) Bob Lee and Kevin Bourrillion

Reviewed by Michael Yuan
Dependency Injection (DI) is a widely used design pattern in Java applications. It helps decouple application components from each other, and in turn, makes it possible to unit test application components separately. For DI to work, a lightweight container is needed to manage the dependency between application components. When one component needs access to another one, it simply "asks" the container to provide one. Guice is an open source DI container from Google. Before Guice, most DI frameworks in Java used XML-based configuration. Guice is the first generic DI framework that takes advantage of Java annotations as the main configuration mechanism. Compared with the traditional XML-based approach, Guice annotations offer the following advantages. First, Java annotations are type safe. They are checked by the compiler. That eliminates much of the runtime errors caused by misspelled XML literal strings in previous frameworks. Second, Java annotations are processed much faster than XML documents. That enables Guice to out-perform XML-based DI frameworks by orders of magnitude in terms of raw speed. That allows developers to use DI not only in enterprise web applications, but also in performance-sensitive UI or real-time applications. Because of its small footprint, type safety, and high performance, Guice is an ideal DI runtime for framework developers. It can be easily embedded into framework classes that are used over and over by application classes. Overall, Guice is a great innovation that significantly improves the developer productivity when working with one of the most important architectural design patterns in Java.

Eclipse Modeling Framework (Eclipse Foundation)
Reviewed by Rick Wayne
The EMF is a big tent; whether you've decreed that models always precede code or just would like to construct model goodness to your Java source, the EMF can accommodate you. If you're a UML guru in Rational Rose, you can pull Rose output straight into EMF and generate Java interfaces and implementation classes from it. Or if you simply add some annotations to your Java, it can work with that, too. Once a model is in, the editing tools allow you to perform (admittedly simple) work directly on it, serializing it back to its native Ecore or generating Java, and then Bob's your uncle.

JasperReports (JasperSoft)
Reviewed by Robert DelRossi
Open source JasperReports bundles high-end capabilities in an intuitive, easy-to-use package. For Java developers who need a full-featured reporting toolkit, JasperReports more than fits the bill. Along with all the standard reporting layouts, JasperReports includes more advanced presentations, such as cross tabs and graphs. Support for hyperlinks means that you can build drill-down reports that expose increasing levels of detail. We especially liked the easy way you can output reports to PDF and HTML, too. JasperSoft offers a full range of support services for JasperReports as well as iReport, a graphical client for report layout.

Zend Framework (Zend Technologies)
Reviewed by Michael Yuan
PHP is probably the most widely used programming language for developing web applications today--thanks to its ease of development and deployment. However, the ease of use comes at a price: most PHP applications do not follow object-oriented design and typically do not have multi-tiered architecture that is essential to scalability and maintainability as the application grows. To address the "growth" problem in PHP, several PHP frameworks have been developed to promote scalable design and architecture in PHP applications. The open source Zend Framework (ZF) is one of the leading frameworks in this space. ZF provides a collection of very useful components including a web security framework, an Object-Relational-Mapping framework, a Model-View-Controller framework, a cache framework, as well as mail/session management/remote service call frameworks. Heavily influenced by successful web frameworks, such as the Ruby on Rails, the Zend framework features the "configuration by exception" approach. That means that developers can get started very quickly without any configuration files. Each framework inside ZF can be used independently. That allows developers to incorporate ZF into existing applications piece by piece as needed. Overall, the Zend Framework brings in great productivity gains of PHP-based projects.

Mobile Tools

Mojax (mFoundry)
Reviewed by Michael Yuan
To go web, or to go native Java: that is a common dilemma that faces many mobile application developers. On one hand, web applications are easy to write and can be accessed across many different devices. With the increasing power of Ajax, web applications can also deliver rich user experience. On the other hand, mobile web browsers are still immature and many device features (e.g., camera, address book, GPS, etc.) are simply not accessible from the browser. Mojax gives you the best of both worlds. It lets you use common web-programming techniques, such as JavaScript, CSS and XML-based user interface, to write mobile applications and then compiles them to Java ME applications that can be deployed on the phone. Mojax applications can easily access camera, location, and device address book through the XML/JavaScript API. Mojax automatically takes care of threading and other standard boilerplate issues in Java ME programming. The declarative UI approach significantly reduces the amount of code when compared with a similar Java ME application. Mojax also includes an Eclipse-based design tool that lets you assemble XML UI very quickly. It is a very attractive platform for writing rich Internet-based business applications; however, the XML UI for Mojax is not well-suited for developing mobile games. We have also noticed that the Java ME application generated by Mojax does not run on all Java handsets, which probably has more to do with the fragmentation of the Java ME platform than with Mojax itself. But we hope that future versions of the Mojax toolset will be able to generate Java ME builds that specifically target each device.

Adobe Device Central CS3 (Adobe Systems)
Reviewed by Mike Riley
Adobe certainly knows a thing or two about presentation, and their expertise shows in the exquisitely packaged Adobe Device Central developer resources web site. Developers can watch Flash-based presentations and visit live applications that demonstrate how to optimize the mobile experience via Adobe's Creative Suite 3 application compilation. Adobe Device Central takes the idea of Flash-engineered Flex-like applications to the mobile device platform. While Flash technologies have yet to become as ubiquitous on all mobile devices to the degree Flash ships with nearly every desktop computer, the technology behind ADC-CS3 is the bedrock of an exciting mobile application future.

Eclipse Embedded Rich Client Platform (Eclipse Foundation)
Reviewed by Mike Riley
The embedded mobile device space is continuing to rapidly evolve. Such changes demand more manageable, secure and scalable frameworks to build next generation mobile applications, and the Eclipse Embedded Rich Client Platform (eRCP) intends to deliver upon those and other demanding requirements. The eRCP provides Eclipse Java application developers with the same style of tools for developing mobile applications that are available to desktop applications via a core runtime, an embedded Standard Widget Toolkit (eSWT) and a set of SWT mobile extensions optimized for mobile device displays and a microXML parser that supports the SAX and DOM tree management and traversal.

NetBeans IDE 6 with Sun Java Wireless Toolkit 2.5.2 (Sun Microsystems)
Reviewed by Hugh Bawtree
NetBeans has come a long way. It has developed into a first class IDE with an impressive breadth. It has all the features we expect of an excellent IDE: visual GUI layout, auto code completion, GUI debugger, etc. And it's still free! What makes this really exciting is the breadth of projects that NetBeans 6 can handle. It does the usual Java server apps, as well as web services (Ruby on Rails), mobile development (with a Visual Designer) and a mobile Game Builder. To top it off it does C/C++ code and UML modeling. So mobile developers and embedded systems programmers can now get a fully functional IDE just like the other Java programmers.

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task.
However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Video

This month's Dr. Dobb's Journal

This month,
Dr. Dobb's Journal is devoted to mobile programming. We introduce you to Apple's new Swift programming language, discuss the perils of being the third-most-popular mobile platform, revisit SQLite on Android
, and much more!