One of the components of the GNU Compiler Collection (GCC) is GCJ, the GNU Compiler for the Java programming language. GCJ is a compiler that can generate both native code and bytecode from Java source files. GCJ includes a runtime library (libgcj) that provides all runtime support, the core class libraries, a garbage collector, and a bytecode interpreter. Programs created by gcj can dynamically load and interpret class files or native shared libraries resulting in pure, or mixed native/interpreted applications.
Version 4.0 of GCJ introduced a new deployment model that made is much easier for distributors to package traditional Java programs as native applications without requiring any source level changes. For version 4.1 of GCJ, this new binary compatibility (BC) ABI has also been used for parts of the core library, but only for a minimal subset which includes XML, CORBA and imageio. This change means that those parts of the core library can easily be upgraded with newer versions by the end user. In time, it will become possible to upgrade more parts of the core libraries in a similar manner.
All of the major GNU/Linux distributions use GCJ to support programs like OpenOffice, Eclipse and Tomcat. So it is not surprising that the improvements in GCJ 4.1 have been very application and distribution driven. All of the applications supported by GCJ 4.0 run with more stability under GCJ 4.1. And support has been added for a large range of programs like the Azureus bittorrent client, the RSSOwl feed reader, the JOnAS application server, and the java-gnome based system monitoring and debugging tool Frysk.
The core library from GCJ 4.0 was based on GNU Classpath 0.15, which was released almost a year ago. The core library of GCJ 4.1 has been updated to use GNU Classpath 0.19, plus selected bug fixes from the new 0.20 release. GNU Classpath is a shared development effort that is supported by a wide variety of projects. These projects include interpreters like JamVM and SableVM, just in time compilers like Kaffe and Cacao, operating systems like JNode and IKVM, and .NET/Mono interoperability and "java-in-java" implementations like JikesRVM. With around 20 projects being based on GNU Classpath and more than 40 people from all these different groups working very hard this last year, the coverage and completeness of the core libraries have increased enormously. An overview of all the supported packages can be found here.
Besides lots of correctness and completeness fixes in the more basic packages (lang, math, io, net, text and util), GCJ 4.1 will support HTTP operations on data larger than available memory. It will better support the new NIO package, including correct file locking. Support for AWT, the abstract window toolkit, has been much improved through better integration with GTK+, allowing the transparent copy/paste of various data types between applications. Image loading should be faster and more robust. And the GNU JAWT implementation makes it possible to interface AWT Canvas painting with native screen resources (allowing the jogl OpenGL bindings to work).
XML support has been expanded to include xml.transform and xml.xpath. Free Swing has seen a lot of updates that should make it possible to run simple GUI applications using various look-and-feels, and includes support for JTrees and JTables. RMI and Corba implementations have been added, including support for RMI over IIOP. There is even a sample distributed five-in-a-row game included that has been implemented using Free Swing and Corba.
GCC 4.1 has been in freeze since November, to make sure all regressions are fixed. This means that no major features have been added since then. GCJ now supports dropping a classpath directory inside the GCC source tree to get updated core library support. Because of the intertwined nature of the Java language, runtime and libraries, this isn't completely trivial for end users yet. The core GCJ developers will have a much easier way to get a more up-to-date core library. End-users will have to wait until version 4.2 for easier core library upgrading, through more extensive BC ABI support.
A lot of projects for GCJ 4.2 have already started. There is a lot of interest in making static linking work more smoothly, especially for embedded devices and for windows developers. There are different projects for shrinking the size of executables, by stripping reflection data, or the core library (micro-libgcj). There is also work on getting more precise information to the garbage collector in order to decrease overall memory usage. To better support debugging of interpreted classes, (for native compiled classes you can just use GDB) support for JDWP is being added to the libgcj interpreter. This should also enable debugging applications from inside of IDEs like Eclipse.
The GNU Classpath core libraries are also being updated to support even more core packages. Work is being done on integration of a full JCE crypto provider (GNU Crypto and Jessie) to provide transparent https, ssl and tls networking support. The regular expression engine, gnu.regex, is being updated from the old Posix syntax to provide compatibility with the util.regex syntax and features. StAX support has been added, and work is being done to provide xml.validation. The beans package has been extended to support XMLEncoder serialization.
Printing support through CUPS is being added. An ALSA provider that handles MIDI In ports and a DSSI provider that handles software synthesizers has been added. Lots of new security related tests have been added to the Mauve project to check the permission-based access controls in the core library. And GNU Classpath has added support for the new Java 1.5 language features like generics, although those are still being developed in a separate branch.
The GPLv3 draft has been enthusiastically received by the GCJ and GNU Classpath hackers. The Java programming language has traditionally been used for extensions to other projects such as Apache and Eclipse. Software from those projects have been licensed under GPLv2-incompatible licenses, preventing cooperation and code sharing. The proposed License Compatibility clause in GPLv3 will make code sharing between GCJ/GNU Classpath and Apache/Eclipse possible.
Tom Tromey is the main developer of GCJX, the GCJ frontend successor that supports the new 1.5 language features. He surprised everybody soon after the GPLv3 draft was released by proposing to look into replacing the Java source-to-bytecode part of the GCJ compiler with the Eclipse compiler (ECJ) instead of using his own GCJX effort. The GPLv3 isn't final yet (and won't be for a year), and there are lots of technical issues to discuss. But sharing code and resources between projects seems like a very attractive feature.
Various GCJ hackers will meet in two weeks at the GNU Classpath and Friends meeting during FOSDEM. It will be very interesting to see how the roadmap of these projects looks at the conclusion of that event.
Backup Softwarehas been announced. "GPar2 is a GTK+ GUI for par2 recovery sets. This new release provides more feedback, printing the status of each file in the archive. Some bugs in the progressbars have also been fixed. It comes with libpar2 (currently 0.2), which is widely based on par2cmdline client."
Database SoftwareDue to a critical performance related bug (Bug#15935) 4.1.17 was not released. The bug was introduced within 4.1.16, we therefore recommend all users to upgrade directly to 4.1.18 if they are using 4.1.15 or earlier." has been announced. "Currently it is still in state of development, but it can be used calmly like base for the construction of database." is available. "Welcome to this first beta for phpMyAdmin 2.8.0. The jump from 2.7.0 to 2.8.0 is partly because from now on, versions with the same X.Y number will have the same feature set, while the third number will be for bug fixes. Also, 2.8.0 has a new web-based setup script."
Filesystem UtilitiesGhost for Linux has been announced. "Ghost for Linux is a hard disk and partition imaging and cloning tool similar to Norton Ghost and (tm) by Symantec. The created images are optionally compressed, and they can be stored on a local hard drive or transferred to an anonymous FTP server. A drive can be cloned using the Click'n'Clone; function." has been announced. "KleanSweep allows you to reclaim disk space by finding unneeded files. It can search for files based on several criteria: you can seek for empty files, backup files, broken symbolic links, dead menu entries, duplicated files, orphaned files (files not found in the RPM database), and more."
Networking Toolshas been announced. "AIM Sniff is a utility for monitoring and archiving AIM and MSN messages across a network. It can be used to monitor for cases of harassment or warez trading. It has the ability to do a live dump (actively sniff the network) or read a PCAP file and parse the file for IM messages. You also have the option of dumping the information to a MySQL database or STDOUT." has been announced, it includes several new capabilities. "SICM is a tool to monitor, graph and alert the capacity of computing devices and applications. SICM runs on a Windows or Linux device on your network, 24 hours every day and constantly records the capacity parameters of any networked device using snmp, ping or custom modules. The recorded data is stored for later reference via a user friendly menu-driven web browser. E-mail alerts are raised if a user determined number of queries fail."
Web Site Developmenthas been released. "MoinMoin 1.5.2 is a bug fix release. The 1.5 branch brings you several new features such as the GUI editor, which allows the users to edit pages in a WYSIWYG environment, and many bug fixes." Silva 1.5 is the first Silva release that really starts using Zope 3 technology in the core, and is the first step in a longer evolution. It does not have a lot of externally visible feature changes, but focuses on making Silva work with Zope 2.8 and Five 1.2." announced the availability of version 3.0 of the Zimbra Collaboration Suite. "ZCS 3.0 builds on the groundbreaking server and user interface technologies that have made the beta versions so successful. These include integrated search, single-copy mail store, discovery, anti-spam and anti-virus/security capabilities on the back end, and a rich, full-featured, AJAX-based Web client that brings e-mail and calendar items to life through Web mash-ups on the front end." introduces httplib2 on O'Reilly. "In the latest installment of Joe Gregorio's The Restful Web column Joe goes a bit nuts, presenting httplib2, a Python HTTP client library written with the goal of doing caching in HTTP right."
Audio Applicationshas been announced. "This is the first maintenance release of the Ardour 0.99.x series. Many serious issues were fixed and stability is improved." On behalf of the Rhythmbox developers, I'm proud to announce the fourth release of the Rhythmbox 0.9 series, which includes a large number of fixes, improvements and new features. Notable new features include a play queue, GStreamer 0.10 support, full remote gnome-vfs support, much improved DAAP support, library "watching" and support for mass-storage audio players." This is the first beta release for soniK 1.0."
CADThe twenty-eighth release of PythonCAD offers improved abilities to edit entities in a drawing. Previous releases had inconsistent behavior for entity modification as some operations first required selecting then entities to change and then selecting the operation to perform, where other changes were accomplished by first selecting the action and then selecting entities. The latest release allows for entity modifications to be performed in either mode, thus making the code more consistent as well as easier to use."
Desktop EnvironmentsWe are pleased to announce the release of GARNOME 2.13.90 Desktop and Developer Platform. This release includes all of GNOME 2.13.90 (aka 2.14.0 Beta 1) plus a whole bunch of updates that were released after the GNOME freeze date." With this release we're entering the UI freeze period which means that no changes in the user interface should be done without approval from the release team. Mail any changes to email@example.com for review and we prefer png's to a 1000 line patch to some XML file :-)"
ElectronicsXCircuit, an electronic schematic drawing package, is out with expanded undo capabilities.
Gamesis using Blender to create game animations. "With the new IK System from Blender, the animation process has become much easier. The new rig also helps because of the automation contraints. I also went ahead and gave the hands a full set of fingers because I am seeing this in many commercial games. The current animations that you see are going to be avaible only for Ember and are going to happen relatively quick." has been announced. "The ScummVM team is pleased to announce the release of ScummVM 0.8.1. ScummVM is a cross-platform interpreter for more than 50 point-and-click adventure games. This release fixes several bugs from 0.8.0, improves support for Humongous Entertainment games and several international versions." has been announced. "This release brings many improvements to the GUI components. The character creation dialog now has a list of playable character types. This fixes one of major issues with the previous release. Speech Bubbles have been added to improve dialog with other players and NPCs and there is also a basic help system. Other GUI components allow adjusting key bindings and video modes. Two new console commands have been added. /me for emotes and /eat (added to inventory dialog) to nourish our character."
Interoperabilityhas been announced. Changes include: "Directory change notifications can use inotify now, Hardware breakpoints in the Wine debugger, Beginnings of support for tape APIs, A bunch of improvements to the IDL compiler, Better scheme for mapping My Documents etc. to Unix directories, and Lots of bug fixes." Wine Weekly Newsletter has been published. Topics include: WineTools & Wine, SCSI Tape Drive Support, JACK Audio Driver, Overriding Executables With Winecfg, and Hook Problems.
Office Applicationsis available with new features, bug fixes and more.
Web Browsershas been announced. "The first security and stability update to Mozilla Firefox 1.5 has been released. It is recommended that all Firefox users upgrade to this latest version." See the release notes for details. Note that this release fixes a security problem for which exploits already exist. The Annodex Firefox Extension turns the Mozilla Firefox web browser into an Annodex browser. It supports playback of Annodex media encoded with the open-standard Ogg Theora video codec and the Ogg Vorbis audio codec, uses timed URIs to perform efficient, bandwidth-friendly server-side seeking on Annodex media, enables hyperlinking into and out of Annodex media, and displays a "table of contents"-like clip list for CMML content." The minutes from the January 30, 2006 mozilla.org staff meeting have been announced. "Issues discussed include Firefox 220.127.116.11 Release, Firefox 2 and 3 Planning, Thunderbird, XULRunner, Personnel and Marketing".
Miscellaneoushas been announced, it features minor feature enhancements and bug fixes. "WIKINDX is a single or multi-user research environment storing searchable bibliographies, notes and citations and integrated with a WYSIWYG word processor for the authoring of publication-ready articles automatically formatted to chosen citation styles."
Languages and Tools
Javapart two of an O'Reilly article series. "Portlets aim to be your next desktop, providing small pieces of web-based functionality that can be aggregated on a portal page. In this article, Sunil Patil delves deeper into the JSR-168 portlet spec by showing off edit mode, JSP integration, the portlet tag library and preferences API, and Pluto's admin console."
Perluses Perl's X11::GUITest to test X11 applications. "Interfaces to GUI applications like DCOP or D-BUS allow you to interact with GUI applications in order to get at their internal states or set some arbitrary states. Sometimes GUIs don't allow for such interaction and you need to "click" them. If you're writing such an application, you need some sort of regression tests for it to make sure your widget/windows are as accessible as they should be. If this is the case, there is a Perl module to help you: X11::GUITest."
PHPPHP Weekly Summary is available. "Topics include: Fishy code, a class named Betty, open() calls and APC, TextIterator, FastCGI reaches 5_1 branch".
Pythonhas been announced. It features two new command line options.
RubyRuby Weekly News looks at the latest discussions from the ruby-talk mailing list.
IDEshas been announced. "The eclipse-cs Checkstyle plug-in integrates the well-known source code analyzer Checkstyle into today's leading IDE - Eclipse. With the Checkstyle Eclipse plug-in your code is constantly inspected for problems. Within the Eclipse workbench you are notified of problems via the Eclipse Problems View and source code annotations just as you would see with compiler errors or warnings. Version 4.1.0 beta2 of the eclipse-cs plugin was just released. It contains some bugfixes and minor features over 4.1.0 beta."
Test SuitesWelcome to the sixth issue of LDTP Newsletter! LDTP community has reached another important milestone with the release of LDTP 0.3.0. This release features the new architecture which is a result of more than 3 months of hard work by the LDTP community. This newsletter also includes latest news on our approach towards achieving an automated test engine. Useful references have been included at the end of this article for those who wish to hack/use LDTP."
MiscellaneousDISIT, an open-source x86 disassembler, is available for testing.
Page editor: Forrest Cook
Next page: Linux in the news>>
Copyright © 2006, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds