Version 6 of TclJava

Updated 2004-04-16 17:23:18

Project name used to describe the two packages: Jacl and TclBlend.

You can do interesting things with Tcl and Java. Check out TclJava Tricks.

http://www.sf.net/projects/tcljava


The tcljava developer and user mailing lists received this msg on Monday March 17, 2003:

The Tcl/Java 1.3.0 release is now available for download. There is also a new project website that can be accessed at the following URL:

http://tcljava.sourceforge.net/docs/website/index.html

There are so many new features and fixed bugs in the 1.3.0 release, I don't even know where to begin. This release was about 3 years in the making, so it is by no means a minor upgrade. Please download and test it out, just be aware that this is not a production release. Significant evaluation and testing are still needed before 1.3 is considered safe for production systems.

Here is a short rundown of the new features:

(NEW REGULAR EXPRESSION PACKAGE FOR JACL)

A new implementation of the regexp and regsub commands has been donated by Colin Stevens of Sun Labs fame. This replaces the Oro regexp implementation. It was binary only and no longer supported. Jacl is now 100% Open Source.

(NEW COMMAND FOR JACL)

An implementation of Tcl's binary command has been added to Jacl. This new command passes all of the Tcl regression tests for the binary command. Thanks go to Christian Krone for this command.

(NEW COMMAND FOR JACL)

An implementation of Tcl's history command has been added to Jacl. This new command passes all of the Tcl regression tests for the history command. Thanks go to Christian Krone for this command.

(JVM SUPPORT)

A completely new build system has been added. It now supports the IBM Java-2 1.3 JVM. The new build system also adds support for the Kaffe Open JVM with Tcl Blend. Jacl has worked with Kaffe for some time, but now both Tcl Blend and Jacl can be used with Kaffe.

(NEW COMMAND FOR JACL)

An implementation of Tcl's interp command has been added to Jacl. This new command passes all of the Tcl regression tests for the interp command. Thanks go to Christian Krone for this command.

(TCL BLEND NOW FULLY THREAD AWARE)

Earlier versions of Tcl Blend made use of a global lock that serialized each Java method call. In the new version, Tcl Blend's JNI code has been rewritten to get rid of this global lock. This change significantly simplifies the code and should increase performance when Java methods are invoked from multiple threads.

(NEW COMMAND FOR JACL)

The fconfigure command has been added to Jacl. Thanks go to Bruce Johnson for providing the initial implementation of this command.

(NEW COMMAND FOR JACL)

The encoding command has been added to Jacl. Thanks go to Bruce Johnson for providing the initial implementation of this command.

(NEW COMMAND FOR JACL)

The socket command has been added to Jacl. Both client sockets and server sockets are supported. Thanks go to Neil Madden for providing the the initial implementation of this command.

(NEW COMMAND FOR JACL)

The file volumes subcommand has been added to Jacl. The implementation makes use of the File.listRoots() method introduced in JDK 1.2, so a newer JDK is required to make use of this functionality. Thanks go to Shawn Boyce for providing the initial implementation of this command.

(NEW REF COUNT SYSTEM FOR TCL BLEND)

A new reference counting system has been implemented for Tcl Blend. A newly created CObject or TclList no longer increments the ref count the native Tcl_Obj. Instead, the ref count for a Tcl_Obj is incremented when TclObject.preserve() is invoked and decremented when TclObject.release() is invoked. If a TclList created inside a Java method is never released, it will be cleaned up when the Java method returns. This new ref counting system does not depend on the Java garbage collector and should not suffer from the memory leaks or shutdown issues that plagued the previous implementation.

(NEW REFLECTED METHOD/CONSTRUCTOR/FIELD ACCESS)

A new approach to reflected method, constructor, and field access has been implemented. In the previous implementation, package scoped entities were considered when accessing a field, when attempting to resolve a method signature, or when choosing a constructor. In the new implementation, these package scoped entities are only considered when a custom package invoker is defined for the package.

(PASSING MULTIPLE JVM OPTIONS)

The tclblend_init variable has provided a means to pass a single JVM option to a JDK 1.2 or newer JVM. This support has been improved so that multiple JVM options can now be passed.

(NEW REFLECTED OBJECT ACCESS)

A new approach to reflected object access has been implemented. In the previous implementation, inaccessible objects could be reflected in the interpreter. This type of access would be illegal in Java code, so new Class accessibility checks have been added to each of the java methods. An exception will now be raised on any attempt to interact with an inaccessible class.

(PASSING TCL OBJECTS TO JAVA)

It is now possible to pass a TclObject directly to a Java method. In previous versions it was possible to pass a TclObject contained in a ReflectObject, but it was not possible to pass the actual TclObject that contained the ReflectObject. The new implementation makes it possible to directly pass the containing TclObject assuming it is not a ReflectObject that contains a TclObject.

(CHANGE TO TCL OBJECT API)

The TclObject.takeExclusive() method has a number of problems, and has been deprecated in favor of the new TclObject.duplicate() method. This new duplicate method works identically to Tcl_DuplicateObj. Old code that makes used of the takeExclusive method will still work, but it should be updated to use duplicate as time permits. See the TclObject manual entry for an example of how to use this new duplicate method.

(NEW COMMAND FOR JACL)

The array unset subcommand has been added to the Jacl's array command.

(NEW WINDOWS BUILD SUPPORT)

Both Tcl Blend and Jacl can now be built under Windows using the msys_mingw package. Users no longer need to have VC++ installed to build binaries of Jacl or Tcl Blend. See the supplied README file for Jacl or Tcl Blend for more information about how to build under Windows.

(NEW IO SUBSYSTEM FOR JACL)

The Tcl IO subsystem has been ported to Jacl. Encoding, buffering, and line translations for channels now match Tcl semantics. Non-blocking IO and the fileevent command are not implemented.

cheers Mo DeJong


LV Has anyone ever used TclJava in a production environment? I am just wondering how stable the software is.


Category Java