Cafe au Lait Java News and ResourcesGarbage Collection is just easier to use than malloc/free. This is well documented in the industry, and yes it's not entirely "free". Yes the heap needs to be managed in production environments, leaks are still an issue, GC pause times are an issue, etc, etc... but overall it's vastly quicker to write using GC and in the time saved make the program more performant or resilient to GC pause issues and you'll come out far ahead. (I'm blithely ignoring all the C/C++ hand-rolled memory management techniques like "arenas" or "resource areas"; these fall into the category of "malloc/free is so hard to use so we rolled our own poor-mans GC but if the language had GC we would probably have never bothered").
--Cliff Click Jr.
Read the rest in Azul Systems - Cliff Click Jr.’s Blog
ej-technologies GmbH has released version 6.0 of
JProfiler,
a $698 payware profiler
based on the Java virtual machine profiling interface (JVMPI
that can report on CPU usage, memory size, threads, and "VM telemetry"
(whatever that is).
New features in this release include "reworked thread profiling, a new method statistics view, exceptional method runs, tree maps, auto-tuning", and support for FreeBSD x86 and Linux PPC.
Upgrades are $179.
Permalink to Today's News | Recent News | Older News | E-mail Elliotte Rusty Harold
You can also see previous recommended reading or subscribe to the recommended reading RSS feed if you like.
To recommend something for inclusion in this section, please e-mail the URL and title of the article.
JBoss has posted the second release candidate of Hibernate 3.5, an open source (LGPL) object relational mapping system for Java. New features in 3.5 include:
Notably absent from this list (though I hope they just forgot to mention it) is generic type safety. Does anyone have any ideas how to keep Hibernate (especially HIbernate 3.1) from filling my IDE with unchecked cast and other generics warnings?
Sebastiano Vigna has released version 5.1.5 of fastUtil,
a collection of type-specific Java lists,
maps and sets with a small memory footprint
and faster access and insertion. The classes implement their standard counterpart interfaces such as java.util.Map
and can be plugged into existing code. However, they also contain type-specific methods. For instance, the CharList class has not only the usual add(Object o) method but also an add(char c) method.
Version 5.1.x adds new fast iterators with mutable entries and a hierarchy of function interfaces.
fastUtil suffers from the a common problem of open source projects: good code and thoroughly inadequate documentation. If it were just a question of poorly written documentation, it could be patched. Unfortunately the problem is more serious than end user documentation. The library is severely underspecified. For instance the add() method in IntCollection doesn't say whether the new element is added at the beginning of the list, the end, or some random location.
Sure, you can test to find out the answer in this version (It's at the end) but how do I know that this will still be the right answer in 5.1.6 or 6.0? I don't. I can't tell
if adding new items at the end is a deliberate decision or an accident of implementation. I thought there might be unit or acceptance tests, but if there are I couldn't find them anywhere. That gives me even less confidence that the contract is stable.
I am seriously considering reimplementing the parts of this library I actually need (just the primitive collection classes) from scratch using fully designed, documented, specified, and tested contracts. You don't need this level of detail for all projects, but for core libraries like this it's critical. fastUtil is published under the GNU Lesser General Public License (LGPL), so if I want to I could just fork it.
Sun has posted the first beta of NetBeans 6.8, its open source IDE for Java. New features in this version include:
Looks good, though Netbeans is going to have an even harder time making headway now that IntelliJ is open source too.
Subversion 1.6.6, an open source, server-based
version control system designed to replace CVS, has been released.
This is a bug-fix release.
The Gnu Project has released version 4.4.2 of GCC, the GNU Compiler Collection. GCC contains frontends for C, C++, Objective C, Fortran, Ada, and Java as well as libraries for these languages. GCC's Java is a clean room implementation that doesn't use any Sun code, so it doesn't always exactly match Sun release versions, but this is roughly at the Java 1.5 level with some omissions. "This release is a bug-fix release, containing fixes for regressions in GCC 4.4.1 relative to previous releases of GCC." GCC is released under the Gnu General Public License.
JetBrains has announced plans to release IntelliJ IDEA 9.0 as open source under the Apache 1.0 license (and you can download the in-development preview version now). The community version won't have quite all the features of the payware Ultimate version--no Ruby, JavaScript, or Perforce support for example--but now that it's open source it may be possible for 3rd parties to fill those gaps, and the open product is still pretty well-featured for basic Java development. Structured search and replace is the most notable omission. It will be nice for IDEA, NetBeans, and Eclipse to finally be able to complete on a relatively level playing field based on features, usability, and speed without excessive concern over price. Personally I've always chosen Eclipse, even when price wasn't an issue; but I know a lot of developers who prefer IDEA.
Google has posted version 1.2.6 of the AppEngine for Java SDK. "With App Engine, you can build web applications using standard Java technologies and run them on Google's scalable infrastructure. The Java environment provides a Java 6 JVM, a Java Servlets interface, and support for standard interfaces to the App Engine scalable datastore and services, such as JDO, JPA, JavaMail, and JCache.":
App Engine uses the Java Servlet standard for web applications. You provide your app's servlet classes, JavaServer Pages (JSPs), static files and data files, along with the deployment descriptor (the web.xml file) and other configuration files, in a standard WAR directory structure. App Engine serves requests by invoking servlets according to the deployment descriptor.
The JVM runs in a secured "sandbox" environment to isolate your application for service and security. The sandbox ensures that apps can only perform actions that do not interfere with the performance and scalability of other apps. For instance, an app cannot spawn threads, write data to the local file system or make arbitrary network connections. An app also cannot use JNI or other native code. The JVM can execute any Java bytecode that operates within the sandbox restrictions.
Version 1.2.6 adds the ability to receive e-mail, data store statistics, and the ability to delete applications. I dedicated a day last week to learning appengine, but it only took me about 30 minutes. If you already know servlets, this is really straight-forward stuff.
The Legion of the Bouncy Castle has released version 1.44
of the Bouncy Castle Java Cryptography API, an open source,
clean-room implementation of the Java Cryptography Extension (JCE).
It supports X.509 certificates, PKCS12, S/MIME, CMS, PKCS7, TEA, XTEA, SHA224, and lots of other juicy acronyms. It also includes its own light-weight crypto API that works in Java 1.0 and later, and does not depend on the JCE. "GCM mode is now around 10x faster, PSS signature support has been added
to CMS and S/MIME, and support for EC encrypted keys has been added to
the openSSL PEM classes. Bug fixes include correction of a date
calculation error in GeneralisedTime when the time included
microseconds, support for ECDH with the JSSE, and the J2ME SecureRandom
now uses common seed material within the VM. A number of other fixes and
enhancements have been made."
I've released XOM 1.2.3, my free-as-in-speech (LGPL) dual streaming/tree-based API for processing XML with Java. 1.2.3 fixes a few minor bugs:
Please upgrade when you get a chance. I'll post maven packages soon.
BlueJ 2.5.3, a free integrated development environment
(IDE) for Java aimed at education, has been released. "This is a bug-fix release, with important fixes to Java ME support, Subversion support, and for recent Mac OS versions."
Java 5 or later is required.
The Eclipse Project has released Jetty 7.0, an open source servlet engine that supports version 2.5 of the Java Servlet API and version 2.1 of Java Server Pages, and my personal favorite embeddable web server. Version 7 adds some Servlet 3.0 features such as fragments, JASPI for pluggable standard authentication modules, and a modular start.jar mechanism. There is also now jetty-hightide:
Hightide is to jetty as ubuntu is to linux. It is fully open source and contains additional modules and integrations:
- JSP from glassfish
- JTA from atomikos
- maven plugin
- ant integration
- setuid
- spring configuration
Both distributions are available via maven as artefacts or complete bundles
Jetty 6 will continue to be maintained for some time, but all new features will now be developed on Jetty-7. Jetty-8 will be in prelease in the next few months and will support servlet 3.0.
The Apache Jakarta Project has released POI 3.5, an open source Java library "for reading and writing Microsoft Office file formats, such as Excel, PowerPoint, Visio and Word." Version 3.5 adds support for the new OOXML formats introduced in Office 2007.
The Eclipse Project has released Eclipse 3.5.1 Galileo, an open source integrated development environment for Java. (Other languages such as C++ are supported, but not especially well. I'll have to try the new PHP and XSLT support.) This is a bug fix release.
The Apache Jakarta Commons Team has released version 1.5.3 of their open source Commons Pool object pooling API. This is a bug fix release.
The Eclipse Project has posted the second "milestone" of Eclipse 3.6 Helios. Nothing major in 3.6 so far; just some very minor improvements most folks will never notice like NTLMv2 proxy support and hideable fast view bars. Extract method can now handle continue statements.
Google has released the Android Development Kit 1.6. According to Xavier Ducrohet:
Android 1.6, which is based on the donut branch from the Android Open Source Project, introduces a number of new features and technologies. With support for CDMA and additional screen sizes, your apps can be deployed on even more mobile networks and devices. You will have access to new technologies, including framework-level support for additional screen resolutions, like QVGA and WVGA, new telephony APIs to support CDMA, gesture APIs, a text-to-speech engine, and the ability to integrate with Quick Search Box. What's new in Android 1.6 provides a more complete overview of this platform update.
The Android 1.6 SDK requires a new version of Android Development Tools (ADT). The SDK also includes a new tool that enables you to download updates and additional components, such as new add-ons or platforms.
You can expect to see devices running Android 1.6 as early as October. As with previous platform updates, applications written for older versions of Android will continue to run on devices with Android 1.6.
Martin Odersky has released Scala 2.7.6, a general purpose programming language mixes object-oriented and functional features. It is hosted on top of the Java virtual machine. According to Antonio Cunei, 2.7.6 fixes "one rare issue that could result in a 'malformed Scala signature' message. No other fixes or changes are included; if you have never encountered the message above, you will not notice any difference by upgrading. "
Bill Pugh of the University of Maryland has released FindBugs 1.3.9, an automated open source tool for finding potential bugs in Java code. New bug detectors in this release include:
I tested this release out on XOM. It didn't find any real bugs, but it did point out one place where XOM should probably be making a null-check a little earlier than it does, enabling it to short-circuit a common path rather than waiting for an exception to bubble up and be caught. Further investigation along that code path has made me start to rethink how relative URLs are handled.
Apple has released Java Update 5 for Mac OS X 10.5 to address assorted security vulnerabilities. Essentially this upgrades Java 1.6.0_13 to 1.6.0_15, Java 1.5.0_19 to 1.5.0_20, Java 1.4.2_21 ton 1.4.2_22, and fixes an apparently Mac-specific bug in Java Web Start command launcher. Check Software Update to download.
Real life is interfering with blogging lately. The last couple of weeks have been occupied with moving to New York, and starting work with a new team. At home, my life is still in boxes. I just got my monitor and keyboard set up today. My stove still isn't working. It will probably be late September before I resume a more regular update schedule here. Despite the temporary hiatus, getting back to Brooklyn should be a long term increase in my productivity if for no other reason than that my Brooklyn office is so much better than the loft I had in Irvine. (Never again will I rent an apartment with thick, wall-to-wall carpet in every room.)
Older News | Today's XML News on Cafe con Leche | Mokka mit Schlag | The Cafes