1. Latest version
Binaries/Source
2. How to install
- Copy the CAB file to
\My Documents.
- Tap the CAB file.
Program is installed under \Program Files\Mysaifu JVM folder.
3. How to uninstall
Select "Mysaifu JVM" in "Settings - Remove Programs".
4. ChangeLog
0.4.7 -> 0.4.8
JVM
-
FIXED: Illegal cast result
float to interger types, and double to integer types. (Bug #20056)
-
FIXED: Illegal line number in stack trace message.(Bug #19442)
-
Support thread dump. (Feature request #19436)
JNI
-
FIXED: Cannot invoke a method whose parameter is multi-dimension array from JNI.(Bug #19967)
Package java.awt
-
FIXED: Call
GraphicsDevice.setFullScreenWindow(Window) with hidden Window, and call Window.setVisible(true), but the Window does not in full screen mode.(Bug #19759)
-
FIXED: Unnecessary
MouseEvents occurred when Tap and Hold.(Bug #20749)
-
FIXED:
Window.getFont() and Frame.getFont() returns null.(Bug #20708)
-
FIXED:
Font.canDisplayUpTo() always throws UnsupportedOperationException.(Bug #20510)
Package java.lang
-
FIXED:
Thread.interrupted() does not clear internal interrupted event. (Bug #9453)
-
FIXED:
Thrad.getState() throws UnsatisfiedLinkError.(Bug #19478)
-
FIXED: Deadlock occurres in
ClassLoader.findLoadedClass().(Bug #19458)
Package java.nio
-
FIXED:
SelectorProvider.provider().openSelector() always throws ExceptionInInitializerError.(Bug #12454)
Package java.net
-
FIXED:
Socket.bind() does not throws BindException when a port number specified which already bound.(Bug #20366)
-
Enables SSL/TLS protocols. (Bug #8053, #12433, #19580)
Package javax.swing
-
FIXED: Divider of
JSplitPane is too thin.(Bug #19447) (Caused by Bug #20056)
0.4.6 -> 0.4.7
JVM
-
FIXED:Removed horizontal scroll bar from console window.(Bug #19144)
-
FIXED:Don't call
AccessController.doPrivileged() when the SecurityManager is not set. (Bug #19110)
JNI
-
FIXED:JVM crash when
JavaVM->GetEnv() called.(Bug #19173)
-
FIXED:When the JNI function throws
Exceptions, JVM crashed.(Bug #19181)
AWT native interface (JAWT)
-
FIXED:JAWT crash when the
Component has no native peer. (Bug #19161)
Package java.lang
-
FIXED:
System.currentTimeMillis() returns wrong value.(Bug #19106)
0.4.5 -> 0.4.6
JVM
-
Changed file search algorythm in rt.jar (linear search -> binary search).
-
FIXED:
NoClassDefFoundError occurres when class initialization failed. JVM must throw ExceptionInInitializerError.(Bug #19034)
-
FIXED:Same DLL can be loaded by multiple class loaders.(Bug #19040)
Package java.awt
-
FIXED:Cannot display chinese font in English version OS.(Bug #9674, Bug #14239)
-
FIXED:Font size is incorrect.(Bug #15422)
-
Graphics.drawImage (Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer) throws AWTError when img is instanceof BufferdImage.(Bug #15943)
-
FIXED:
Graphics.drawPolyline() throws AWTError when parameter size less than 1.(Bug #16996)
-
FIXED:Scroll range of
ScrollPane is wrong.(Bug #17511)
-
FIXED:
Toolkit.getSystemClipboard() does not check caller's permission.(Bug #18901)
-
FIXED:Many classes in
java.awt package don't work when the SecurityManager is set.(Bug #18902)
Package java.io
-
ByteArrayOutputStream always throws AccessControlException when the SecurityManager is set.(Bug #19047)
Package java.lang
-
FIXED:Return value of
System.getProperty("java.home") is wrong.(Bug #18877)
-
FIXED:Return value of
Class.getInterfaces() is wrong.(Bug #18893)
-
FIXED:Main thread's
ThreadGroup has no parent.(Bug #18914)
-
FIXED:Cannot load class when the
SecurityManager does not permit to access java.class.path(Bug #18921)
-
FIXED:
AccessControlException occurred in ClassLoader.getResource()(Bug #18938, Bug #18940)
-
FIXED:Constructor
String(byte[] data, int offset, int count) throws AccessControlExceptionwhen the SecurityManager is set.(Bug #18955)
Package java.lang.reflect
-
FIXED:
Method.invoke() does not throw InvocationTargetException.(Bug #18990)
Package java.net
-
FIXED:"jar:" protocol's
URLConnection.getPermission() always returns AllPermission.(Bug #18975)
Package java.security
-
FIXED: JVM hangs up when the
SecurityManager is set.(Bug #16092)
Package java.util.zip
-
FIXED:Exception occurres in
ZipInputStream.getNextEntry() after getNextEntry() returns null.(Bug #15428)
Package javax.sound.sampled
-
FIXED:
AccessControlException occurres when SecurityManager is set. (Bug #19044)
Package gnu.classpath
-
FIXED:
ServiceFactory always throws AccessControlException when SecurityManageris set.(Bug #19046)
0.4.4 -> 0.4.5
JVM
-
FIXED: Wrong parameter passed
ClassLoader.loadClass(String) from VM. (Bug #12218)
Package java.awt
-
FIXED:
Graphics.drawString(String, int, int) throws AWTError when empty String passed. (Bug #15250)
-
FIXED:
GraphicsConfiguration.createCompatibleImage() always throws Exception.(Bug #15251)
-
FIXED: Paint result with
GradientPaint is wrong. (Bug #15293)
-
FIXED:
Graphics.drawLine(int x1, int y1, int x2, int y2) does not draw point x2, y2.(Bug #15318)
-
FIXED:
Component.createVolatileImage(int, int) always returns null. (Bug #15370)
-
FIXED:
Robot class is not implemented.(Bug #15374)
-
FIXED: Return value of
Component.createImage(int width, int height) is not a subclass of BufferedImage. (Bug #15171)
0.4.3 -> 0.4.4
Package java.awt
-
FIXED: AWT components are transparent.(Bug #12678)
-
FIXED:
WindowEvent.WINDOW_CLOSING not occurred when "smart minimize" button tapped.(Bug #14074)
To enable event, set following system property "true".
gnu.java.awt.peer.wce.enableWindowClosingEvent
This property only works on Windows Mobile 5.0 or later.
-
FIXED:
MouseEvent.getClickCount() always returns 1.(Bug #15110)
0.4.2 -> 0.4.3
Package java.awt
Package java.lang.reflect
-
FIXED:
Class.getAnnotations(), Method.getAnnotations(), Field.getAnnotations() always returns empty array.(Bug #14996)
0.4.1 -> 0.4.2
JVM
-
FIXED: Shutdown hook thread not executed(Bug #14218)
JNI
-
FIXED: Pass a wrong value to the Java method which has
boolean, byte, char, short, or float argument via CallXXX() function.(Bug #14662)
Package java.awt
-
Implemented
Font.createFont(). (Feature Request #10411)
-
Implemented
Graphics2D.fill(Shape) and Graphics2D.draw(Shape). Now you can fill and draw any Shape object.(Feature Request #9123)
Package java.net
-
FIXED:
MulticastSocket.setNetworkInterface() always throws Exception. (Bug #14132)
0.4.0 -> 0.4.1
JVM
-
Added -Xmemusage option. (Feature request #12694)
-
Fixed: JVM crashed when try to execute JAR file. (Bug #14098)
Pacakge java.awt
-
Fixed:
GraphicsEnvironment.getAvailableFontNames(), .getAllFonts() returns empty array. (Bug #9675)
-
Fixed:
MenuBar.add(Menu) cannot assign "left soft key" in Windows Mobile 5.0/6.0/6.1. (Bug #12910)
Package java.io
-
Fixed:
File.delete() failes when File is a directory. (Bug #14088)
Package java.net
-
Fixed: Exception occurred in
DatagramSocket.receive(DatagramPacket) when the message is longer than the packet's length.
Package javax.sound.sampled
-
Fixed: Exception occurred in
AudioSystem.getClip().(Bug #12644)
0.3.9 -> 0.4.0
JVM
-
FIXED:Command line option
-classpath omits more than 256 characters.(Bug #12863)
Package java.awt
-
FIXED:
TextArea.setText(TextArea.getText()); brokes string.(Bug #12914)
Package java.lang
-
FIXED:
Interface.class.getSuperclass() returns Object.class.(Bug #12796)
-
FIXED:
String.toLowerCase() returns wrong value.(Bug #12878)
0.3.8 -> 0.3.9
JVM
-
FIXED:
VerifyError occurred when VM loads a class which has a private final method. (Bug #12474)
-
FIXED:VM crashed when a method called which has more than 16 arguments.
-
FIXED:When -Xbootclasspath option has more than two paths, JVM hang. (Bug #12627)
Package java.awt
-
FIXED:
TextArea displays square symbol when "\n" is passed. (Bug #12384)
-
FIXED:
Font always ignores logical font name.(Bug #12716)
Package java.io
-
FIXED:
FileOutputStream() always creates a new file.(Bug #12481)
Package java.lang
-
FIXED:JVM crashed when
System.getenv() called.(Bug #12697)
Package java.util.concurrent
-
FIXED:
UnsatisfiedLinkError occurred.(Bug #12483)
0.3.7 -> 0.3.8
JVM
-
FIXED:
VerifyError occurred when loaded dynamic proxy class.
JNI
-
FIXED: JVM crashed when called JNI method which has primitive array argument. (Bug #12411)
java.net package
-
FIXED:
DatagramSocket.receive() always throws SocketException. (Bug #12360)
Package java.nio
-
Updated libiconv (libiconv-1.9.2 -> libiconv-1.12)
(Feature Request #12421)
Package javax.sound.sampled
-
FIXED: Heap error occurred in end of playback.(Bug #12410)
0.3.6 -> 0.3.7
JVM
-
Updated class library (GNU Classpath 0.97.1).
-
When target method is
static in invokevirtual or invokespecial opcode, JVM throws IncompatibleClassChangeError.
-
JVM
throws IncompatibleClassChangeError when target method is not static in invokestatic opcode.
-
JVM
throws IllegalAccessError when target method is not public in invokeinterface opcode.
-
Improve performance of
invokevirtual, invokespecial, and invokestatic opcodes.
-
Changed Java method call processing. (internal)
-
Output stack trace to the dump file when Win32 exception occurred.
-
Changed default "Java stack size" and "Native stack size"
- Java stack size : 4KB -> 32KB
- Native stack size : 320KB -> 160KB
-
Improve performance of
final class and method.
-
Improve performance of method which has only
return opcode.
-
Reduce memory footprints of
String.intern().
-
Support
WIDE RET opcode.
-
FIXED: No stack trace element in
ExceptionInInitializationError.
-
Moved "kmmalloc" to
libwce.dll. Now all DLLs use kmmalloc to allocate memory.
JNI
-
FIXED: JVM ignores shortage of local references area.
-
FIXED: JVM crashed when invoke super class's private method via JNI. (Bug #11980)
-
FIXED: Failed to load class in
JNI_OnLoad() (Bug #12354)
Package java.awt
-
Added class
Desktop.
-
FIXED: Stylus drag problem.(Bug #12177)
-
Added new system property
gnu.java.awt.peer.wce.disableTapAndHold. If this property sets true, AWT native library does not recognize your tap & hold gesture.
-
Support
MouseWheelEvent.
-
Support GIF file transparency, and animation GIF.
-
FIXED:
List.select(int) does not work.(Bug #12363)
-
FIXED: Contents and status are lost when
TextField, TextArea, List removed from Container.(Bug #10257, Bug #12380)
Package java.lang
-
FIXED: Time discrete is so big (Bug #12099)
Package javax.xml
FIXED: SAXParser.getParser()always returns null.(Bug #12213)
0.3.5 -> 0.3.6
JVM
- Updated class library (GNU Classpath 0.96.1)
- FIXED:Cannot encode c >= 0x0800 character to UTF-8(Bug #11821)
Package java.awt
- FIXED:
Choice.getSelectedItem()does not work.(Bug #11899)
- Now
Graphics2D.drawImage(Image, int, int, int, int, ImageObserver) support BufferedImage.(Bug #11748)
TextArea.getPreferredSize() returns default size (row=5, col=30) when specified 0 to row or col.
Package java.lang
- FIXED:JVM crashed when
Double.toString(String)called.
Package java.net
- Support timeout
Socket class.
Package java.nio
- Now you can write the file which mapped by
FileChannel.map(). But only works on Windows Mobile 5 or later version.
0.3.4 -> 0.3.5
JVM
-
FIXED:JVM crashes when apply array object to instanceof instruction. (Bug #11769)
Package java.awt
-
FIXED:
ArrayIndexOutOfBoundsException occurred in Image.setPixels().(Bug #11771)
Package java.io
-
FIXED:
ObjectStreamClass checks serialVersionUID of array object.(Bug #11734)
Package java.nio
- Implemented
FileChannel.lock(). It only works on Windows Mobile 5.0 or later (Feature Request #7497)
0.3.3 -> 0.3.4
JVM
- Updated malloc() library. (kmmalloc-2.5.3)
0.3.2 -> 0.3.3
Package java.awt
-
Implemented
Graphics2D.setStroke(Stroke). (Only BasicStroke is supported)
-
Implemented
Graphics2D.draw(Shape)
JNI
JVM
-
FIXED:Failed to cast in the following code.
byte[][] b = new byte[1][1];
Object[] o = (Object[]) b;
-
Improves perfomance of finalization.
0.3.1 -> 0.3.2
Package java.awt
-
FIXED:
FocusEvent is not notified to LightWeight component.
-
FIXED:
ArrayIndexOutOfBoundsException occurred in Frame.getFrames().
-
FIXED:Resource leak in
Graphics.clearRect(), dispose().
-
Implemented
Graphics2D.setPaint(Paint) method. Only Color, GradiantPaint, and TexturePaint are supported.
-
Now
Graphics.drawImage(Image, int, int) can draw a BufferedImage.
-
Implemented
GraphicsEnvironment.createGraphics(BufferedImage).
-
FIXED:
PopupMenu does not work.
Package java.io
-
FIXED:
File.toURI() returns wrong value.
Package javax.swing
-
FIXED:
JTextField does not work.
JVM
-
Added
-Xoss option.
-
Added
-Xss option.
-
Added
-Xlogfile: option.
-
Now
StackOverflowError has StackTraceElements.
0.3.0 -> 0.3.1
Package gnu.classpath
-
FIXED: Memory leak in
VMStackWalker.getClassContext().
Package java.lang
-
FIXED: Memory leak in
Object.wait().
Package java.util.prefs
-
FIXED:
UnsatisfiedLinkError occurred.
JVM
-
Reduced address calculation in bytecode execution.
-
Reduced function call of following bytecodes:
baload, saload, caload, saload, iaload, faload, laload, aaload, bastore, sastore, castore, sastore, iastore, fastore, lastore, aastore
-
FIXED: Illegal operand stack status in
<clinit> method.
-
FIXED: Invalid line number displayed in
Throwable.printStackTrace().
-
Improved perfomance of following bytecodes:
new, invokevirtual, invokestatic, invokespecial, instanceof, getfield, putfield
-
Reduced memory footprint of the
ClassFile structure.
0.2.9 -> 0.3.0
General
-
Changed compiler. (eMbedded Visual C++ 4.0 -> Visual Studio 2005)
-
Changed source code directory structure.
Package java.awt
-
FIXED: Return type of
WCETextComponentPeer.setNativeCaretPosition() method is wrong.
-
Added AWT Native Interface (jawt.dll).
JVM
-
FIXED: When "Configuration" dialog is open, "Today" is masked.
-
FIXED: Cannot stop JVM process.
-
Now "Default classpath" and "Default current directory" can be changed by registry settings.(
HKCU\Software\Mysaifu\Mysaifu JVM\DefaultClassPath and HKCU\Software\Mysaifu JVM\DefaultCurrentDirectory)
0.2.8 -> 0.2.9
Package java.awt
-
FIXED:
Font.layoutGlyphVector() always throws UnsupportedOperationException.
-
FIXED:
MouseEvent.getModifies() returns wrong value. (Not included InputEvent.BUTTON1_MASK)
-
When component tapped, AWT library posts not only
MouseEvent.MOUSE_PRESSED event, but also MouseEvent.MOUSE_MOVED event.
-
FIXED: Fourth
Menu on the MenuBar cannot be active.
-
FIXED:
GraphicsDevice.setFullScreenWindow(Window) always throws UnsatisfiedLinkError. (Native method had a wrong name)
-
FIXED: The return value of
GraphicsEnvironment.getMaximumWindowBounds() is incorrect.
Package java.util
-
ZipException includes the file name when file open operation is failed.
Package javax.xml
-
FIXED:
UnsatisfiedLinkError occurred.
JNI
-
Implemented following functions:
GetPrimitiveArrayCritical()
ReleasePrimitiveArrayCritical()
GetJavaVM()
GetEnv()
JNI_GetCreatedJavaVMs()
-
JVM calles
JNI_OnLoad() in the DLL.
-
GetVersion() returns JNI_VERSION_1_2.
JVM
0.2.7 -> 0.2.8
Package java.awt
-
FIXED:
WindowPeer.getBounds() always returns null.
-
FIXED:
TextArea.SCROLLBARS_NONE flag is ignored.
-
FIXED:
MenuItem.setEnabled(boolean) does not work.
-
FIXED:
Menu.insert() does not work correctly.
JNI
-
Implemented following methods.
GetBooleanArrayRegion()
GetByteArrayRegion()
GetCharArrayRegion()
GetShortArrayRegion()
GetIntArrayRegion()
GetLongArrayRegion()
GetFloatArrayRegion()
GetDoubleArrayRegion()
SetBooleanArrayRegion()
SetByteArrayRegion()
SetCharArrayRegion()
SetShortArrayRegion()
SetIntArrayRegion()
SetLongArrayRegion()
SetFloatArrayRegion()
SetDoubleArrayRegion()
GetStringCritical()
ReleaseStringCritical()
JVM
-
Class library is updated (GNU Claspath 0.90 to 0.91)
-
FIXED: Heap error occurred when
System.out.print("\n") called.
-
FIXED:
IllegalAccessError occurred when arrayobj.clone() method called.(Compiled by JDK1.5)
0.2.6 -> 0.2.7
Package java.awt
-
Fixed:
FocusEvent problem.
JVM
0.2.5 -> 0.2.6
Package java.awt
-
FIXED:
Choice does not notify ItemEvent to the ItemListeners.
Package java.lang
FIXED:Process.exec() does not pass command line arguments to the child process.
0.2.4 -> 0.2.5
Package java.awt
-
Call
toFront() method when the first time a Frame is made visible.
JVM
-
Add "Hide VM Window" option. (
-Xhidevmwindow)
-
Add "current directory" option (
-setcwd)
-
The size of
CONSTANT_String structure in the memory is 8 bytes reduced.
0.2.3 -> 0.2.4
Package java.awt
-
FIXED: Font size was too large.
-
FIXED: The size of the rectangle drawn by
Graphics.fillRect() was wrong.
-
FIXED:
Menu.remove(int) method does not work.
-
FIXED: The drawing position of
Graphics.drawString() was wrong.
It corrected so that it draw according to a baseline.
-
FIXED:
GraphicsDevice.getDisplayMode() always returns null.
-
FIXED:
GraphicsDevice.setFullScreenWindow(Window) always throws NullPointerException.
Package java.swing.filechooser
-
Implemented
FileSystemView.
JVM
-
There was unnecessary flags in array object. Deleted those flags.
-
Memory usage of array object was reduced.
-
Small object allocation performance was improved.
0.2.2 -> 0.2.3
Package java.awt
-
Graphics.drawImage() can scale an image.
Package java.lang
-
FIXED:
OutOfMemoryError in System.arraycopy()
JNI
-
FIXED:
ExceptionCheck() always returns false.
JVM
-
Class library is updated (GNU Claspath 0.20 to 0.90)
-
Maximum global reference count increased. (4096 -> 8192)
0.2.1 -> 0.2.2
Package java.awt
-
FIXED:
NullPointerException occurred when passed null to List.add(String) method. Treated as an empty string, "".
Package java.io
-
FIXED: Return value of
File.toURL() is incorrect.
Package javax.sound.sampled
-
Implements Windows CE classes and native library. Currently, supported format is linear-PCM (8bit/16bit).
JNI
-
Implements
ExceptionCheck() function.
-
FIXED: Return value of
ExceptionOccurred() does not registered as local reference.
Version 0.2.0 -> 0.2.1
JVM
-
Class library is updated (GNU Claspath 0.19 to 0.20)
-
FIXED:Win32 exception occurred when '--' included in command line parameter.
Version 0.1.9 -> 0.2.0
Package java.awt
-
FIXED:Memory leak in
FileDialog
-
Set value of FileDialog.setFile(String) to
OPENFILENAME.lpstrFile field.
-
If
gsgetfile.dll is available, call gsGetOpenFileName() and gsGetOpenFileName() instead of GetOpenFileName() and GetSaveFileName().
Package java.lang.reflect
-
FIXED:Class is not initialized when the class is loaded by reflection.
JVM
-
Check class format when load a class file.
-
Check class format version when load a class file. Version must be >= 45.3.
-
Bytecode verifier is partially implemented.
-
Reduce memory footprint of ClassFile structure. (8bytes per class file).
-
Check class name in the class file.
-
Add two options.
- -verify (Verifier is on)
- -noverify (Verifier is off)
-
Check class circularity when load a class file.
-
Check loading constraints when load a class file.
-
When Win32 exception occurred, JVM terminate process. New version terminate only the thread. And create a crash report file.
-
Open the console window when
main() method throws exception.
-
Chenge design of initial dialog box.
-
To edit CLASSPATH easier, file open dialog and folder select dialog is added.
-
Add "Save As" function. You can save the configuration to ".mysaifu" file.
-
FIXED:Heap error.
-
FIXED:Argument parse bug.
Version 0.1.8 -> 0.1.9
Package java.awt
-
Implemented
Font.getLineMetrics() method.
Package java.lang.reflect
-
FIXED:
Method.getParameterTypes() method throws NullPointerException
Package java.util
-
FIXED:When
ZipFile failed to open a file and close() method called, VM crashed.
JVM
-
Copy program counter (pc) to local variable. Performance slightly improved.
Version 0.1.7 -> 0.1.8
package java.lang.reflect
-
FIXED:VM crashed when get a
Method object of a private method, and pass the instance of an inherited class to invoke(Object).
package java.net
-
Following changes applied to
target_native_network.h to avoid compiler warnings.
-
Casts 3rd parameter of
setsockopt() to const char*
-
Casts 3rd parameter of
getsockopt() to char*
-
FIXED:
Call
WSAGetLastError()
instead of GetLastError() to get error code of select() function.
package java.nio
-
Ported libiconv to Windows CE, and enabled character encoding/decoding by
iconv()
-
Added global variable
"errno".
package java.util
-
To improve performance, some methods of
ZipFile class changed to native.
New methods use Windows CE memory-mapped file system.
-
VMTimeZone.getSysteTimeZoneId() always returned null.
Corrected to return the formatted string such as "GMT+offset"
JNI
-
FIXED:Illegal parameter passed to the method which has array parameter.
-
FIXED:
UnsatisfiedLinkError occurred.
-
FIXED:VM is crashed when
NULL passed to ThrowNew() function.
JVM
-
The value corresponding to a system codepage is set to
file.encoding property.
Following codepage is supported.
437: // MicrosoftR MS-DOSR United States
737: // Greek (OEM 437G)
775: // Baltic
850: // MS-DOS Multilingual (Latin I)
852: // MS-DOS (Latin II)
855: // IBM Cyrillic (primarily Russian)
857: // IBM Turkish
858: // MS-DOS Multilingual (Latin I + Euro)
860: // MS-DOS Portuguese
861: // MS-DOS Icelandic
862: // Hebrew
863: // MS-DOS Canadian-French
864: // Arabic
865: // MS-DOS Nordic
866: // MS-DOS Russian
869: // MS-DOS Modern Greek
874: // Thai
932: // Japanese Shift-JIS
949: // Korean
950: // Chinese: Taiwan; Hong Kong SAR, PRC (Traditional Big5)
1250: // MicrosoftR WindowsR 3.1 Central European
1251: // Windows 3.1 Cyrillic
1252: // Windows 3.1 US
1253: // Windows 3.1 Greek
1254: // Windows 3.1 Turkish
1255: // Hebrew
1256: // Arabic
1257: // Baltic
1258: // Vietnamese
-
VM sets
true to gnu.classpath.nio.charset.provider.iconv property in order to enable libiconv.