Once again lots of fixes in Rudolph (various speed improvements, support for
overlapping components, a working MemoryImageSource and PixelGrabber, ...)
A few new packages: java.awt.dnd, java.awt.datatransfer and java.beans
Garbage collection safe points have been added (though disabled by default),
stdin/out/err no longer need javax.comm, javax.comm got a make over, an
ExtensionClassLoader has been introduced, ...
Use asynchronous IO for network, serial ports and touchscreen.
Lots of bugfixes and speed improvements.
A full list of changes can be found at http://www.acunia.com/wonka/CHANGES/0.9.6
We would like to thank Nick Hudson, Mark Anderson, Richard Vanderlaan and Willem
Geldhof for their substantial contributions.
now and not NetBSD-*-arm32. Changes include one or more of:
- Change MACHINE_ARCH == arm32 to also match arm
- Where ONLY_FOR_PLATFORM includes NetBSD-*-arm32, add NetBSD-*-arm
- Where BROKEN or worked around for arm gcc bugs, set USE_GCC3
The last may shake out a few more broken packages the next bulk build.
AWT/Rudolph - Contributed by Michael Smith
- Use console keyboard, add keyboard_init and keyboard_shutdown func-
tions to restore console to cooked mode when Wonka terminates.
- Set the palette in 8-bit mode under Linux.
- Allow some font files to be missing, so long as at least one is
found.
- Mike's patch to switch to another VT is not included, because it
causes problems when Wonka exits abnormally (e.g. SIGSEGV).
AWT/Rudolph - other changes
- Flexible code to set matte / splash screen (see e.g.
awt/rudolph/include/clear.xpm, splash.xpm).
- Replaced a couple of hard-coded Color's by appropriate
SystemColor's.
- Set a unique name from within the constructor of a Component.
- Instead of calling layoutContainer() on the layoutManager directly
from within validateTree(), call doLayout().
- When a component is added to a container and that component was
already in that container, do nothing. (We used to delete it, and
then add it again)
- Made java.awt.Event compliant with 1.1, many other compatibility
improvements thanks to japitools.
- Lots of updates to components to get them to work with
add/removeNotify.
- VTE: removed the byte array from the DriveCar test and made it use
an image.
- VTE: added a confirmation panel before the VTE really calls
System.exit(0)
Core libraries
- Added a SIGQUIT (3) handler which prints out the threads, their
state and their stacktrace, and the state of some important
mutex/monitors. (pressing CTRL-\ sends a SIGQUIT)
- Made it possible to grow/shrink the locals. Wonka will no longer
crash (stack overflow/corruption) when local variable space is
exhausted.
- Go straight to system class loader when loading classes whose
names begin with 'java.' or 'wonka.', don't consult user-
defined class loaders.
- Defer identifying the implementation of an interface method in a
class until the method is actually invoked on that class. This
means that Wonka will no longer complain about interface methods
which are not implemented but are also never called, bringing
joy to OTF developers.
- If the second parameter of get[Declared][Constructor,Method] is
null, treat it as a zero-length array.
- Moved the allocation of a Thread's native stack from <init> time to
start() time. This lowers the memory cost of unstarted threads (as
used by e.g. the ShutdownHooks mechanism).
- Added a new resource file wonka.properties, which is read in after
system.properties; wonka properties can be read using
Wonka.getProperty(), which has the same semantics as
System.getProperty().
- Allow 'aliases' for timezones, e.g. Europe/Brussels is an alias for
ECT (sic). The aliases are taken from the Wonka property
wonka.timezone.TLA.aliases, where TLA is one of the three-letter
timezone names specified in the JDK 1.1 documentation.
- Lots of improvements to RMI and serialisation. Support for
ClassAnnotation, partial DGC support.
- Added a real implementation of Throwable/fillInStackTrace().
- Added the missing interface HttpConnection to
javax/microedition/io
- Implementation of PUT and POST for HTTP connections, handle chunked
data. User-defined protocol handlers are now possible. If an URL
points to a jar file transform the URL to a jar-url.
- Added native support for shutdownIn/Output and the SO_KEEPALIVE
socket option.
- Always exit if application was not successfully launched, don't just
hang.
- Many API updates to fix discrepancies reported by japitools.
- Do not compress wre.jar by default (results in faster startup).
Compression can be turned back on using -sCOMPRESS_WRE_JAR=true .
- Added 2 subclasses of VirtualMachineError for methods not
implemented in Wonka:
- DeprecatedMethodError: should be thrown when method is
deprecated but not implented
- UnsupportedMethodError: should be thrown when a class method
is not implemented yet
- A number of changes to support bytecode generated by recent versions
of Javac and Jikes (e.g. we no longer need "Miranda" methods).
Thanks to Mark Anderson for pointing out these problems and their
causes.
- SHARED_HEAP now defaults to false.
- Partially implementation of java.lang.reflect.Proxy class, work
continues.
- Made Properties load and store aware of special characters (like
: =) in keys. Backslashes are now added/removed when needed.
- Better handling of streams when a process started with
Runtime/exec() dies.
J-spot
- A lot of improvements, now becoming quite usable. Still disabled
by default.
Thanks to Johnny Lam for checking the package before I commited it.
This package is made with the 'xsim' AWT device and the OSwald scheduler.
A pthreads (o4p) based scheduler is being worked on.
What is Wonka?
Wonka is ACUNIA's cleanroom Virtual Machine for the JavaTM language. It
is extremely portable and self-contained, and can optionally be used with
its own real-time executive (OSwaldTM) to provide a complete solution for
embedded devices. It is a full implementation of the Java language, not
just a subset. And it's Open Source.
An Embedded VM
We didn't build a Virtual Machine first, and then look for a market; we
had a project, we had some hardware, and the project required that
hardware to run Java. The result is a Java implementation designed from
the start for embedded systems.
A VM for Real-Time
That system has real-time requirements; maybe not Hard Real-Time, but
hard enough for most of us. We don't claim to have made a totally pred-
ictable Java (it may not even be possible), but we have worked hard to
bring Java's inherent unpredictability under control.
A Java2-compatible VM
Some embedded VMs sacrifice full Java compatibility for other aims. Wonka
doesn't. Automatic garbage collection, dynamic class loading, user-
defined class loaders, fine-grained access control, they're all there.
The standard distribution doesn't include JavaBeansTM or Swing, but you
could add them if you wanted to: all the infrastructure needed is present.
Full AWT 1.1.8 Support
Wonka comes with a high-performance lightweight AWT (RudolphTM) suitable
for any memory-mapped or framebuffer display. Or you can plug in your own
implementation, or run with no AWT at all (e.g. in a ``headless'' system).
The choice is yours.
Free and Open Source
The Wonka Public License was conceived with the needs of embedded system
developers in mind. You don't have to make your entire business open-
source in order to use Wonka, nor do we insist you join a ``community
process''. The WPL is based on the well-known BSD license (revised
version), which is accepted by the community as being a genuine Open
Source license and as a free software license, compatible with the GPL.