virtual machine
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 1939
VMware Server 1.0.3 Build 44356
VMware Server is a robust yet easy to use product for users new to server virtualization technology. more>>
VMware Server product is a robust yet easy to use software for users new to server virtualization technology.
VMware Server enables companies to partition a physical server into multiple virtual machines, and to start experiencing the benefits of virtualization.
Benefits of VMware Server
Provision a new server in minutes without investing in new hardware.
Run Windows and Linux operating systems and applications on the same physical server.
Increase the utilization of a physical server.
Move virtual machines from one physical host to another without re-configuration.
With VMware Server you can:
Streamline software development and testing by allowing developers to create multiple environments with different operating systems on the same server.
Evaluate software in ready-to-run virtual machines without installation and configuration.
Re-host legacy operating systems such as Windows NT Server 4.0 and Windows 2000 Server in a virtual machine running on new hardware and operating system.
Simplify server provisioning by building a virtual machine once and deploying it multiple times.
Leverage pre-built, ready-to-run virtual appliances that include virtual hardware, operating system and application environments. Virtual appliances for Web, email, proxy and other infratructure services are available for download from the VMTN Virtual Machine Center.
VMware Server is the first step to VMware Virtual Infrastructure
While VMware Server is a compelling product for new virtualization users, VMware Virtual Infrastructure products-ESX Server with Virtual SMP and VirtualCenter with VMotion-enable companies to implement large-scale production server consolidation, business continuity, and enterprise desktop solutions with enterprise-class performance, high availability, manageability and security. View a comparison between VMware Server and VMware Virtual Infrastructure.
Enhancements:
- This release fixes four security vulnerabilities, as reported in CVE-2007-1337, CVE-2007-1877, CVE-2007-1069, and CVE-2007-1876.
- These vulnerabilities permitted denial of service, crashes of Windows guests, or corrupted stack pointers.
- A problem with VMware Tools that caused the guest to run out of memory was fixed.
- A crash in the VIX API was resolved.
- Building of the kernel and the HGFS modules was improved.
- Several occasional crashes were fixed.
<<lessVMware Server enables companies to partition a physical server into multiple virtual machines, and to start experiencing the benefits of virtualization.
Benefits of VMware Server
Provision a new server in minutes without investing in new hardware.
Run Windows and Linux operating systems and applications on the same physical server.
Increase the utilization of a physical server.
Move virtual machines from one physical host to another without re-configuration.
With VMware Server you can:
Streamline software development and testing by allowing developers to create multiple environments with different operating systems on the same server.
Evaluate software in ready-to-run virtual machines without installation and configuration.
Re-host legacy operating systems such as Windows NT Server 4.0 and Windows 2000 Server in a virtual machine running on new hardware and operating system.
Simplify server provisioning by building a virtual machine once and deploying it multiple times.
Leverage pre-built, ready-to-run virtual appliances that include virtual hardware, operating system and application environments. Virtual appliances for Web, email, proxy and other infratructure services are available for download from the VMTN Virtual Machine Center.
VMware Server is the first step to VMware Virtual Infrastructure
While VMware Server is a compelling product for new virtualization users, VMware Virtual Infrastructure products-ESX Server with Virtual SMP and VirtualCenter with VMotion-enable companies to implement large-scale production server consolidation, business continuity, and enterprise desktop solutions with enterprise-class performance, high availability, manageability and security. View a comparison between VMware Server and VMware Virtual Infrastructure.
Enhancements:
- This release fixes four security vulnerabilities, as reported in CVE-2007-1337, CVE-2007-1877, CVE-2007-1069, and CVE-2007-1876.
- These vulnerabilities permitted denial of service, crashes of Windows guests, or corrupted stack pointers.
- A problem with VMware Tools that caused the guest to run out of memory was fixed.
- A crash in the VIX API was resolved.
- Building of the kernel and the HGFS modules was improved.
- Several occasional crashes were fixed.
Download (101.7MB)
Added: 2007-05-02 License: Freeware Price:
1821 downloads
Java Brainfuck Compiler 2.0
Java Brainfuck Compiler is an optimising Brainfuck to Java bytecode compiler. more>>
The Java Brainfuck Compiler is a compiler for the uniquely powerful Brainfuck language, which produces Java bytecode that will run on any Java Virtual Machine (with no intermediate steps such as going by way of Java code).
<<less Download (0.010MB)
Added: 2005-04-18 License: GPL (GNU General Public License) Price:
1682 downloads
Ovm 03.11.10
Ovm is a real-time Java virtual machine. more>>
Ovm is a tool for generating virtual machines. Ovm includes a variety of compilers, garbage collectors, and threading systems that can be used to create a free-standing VM.
This VM can (and currently must) be specialized to a particular application. Ovm is currently able generate virtual machines for ordinary Java programs, and programs written to the Real-time Specification for Java.
Main features:
- dynamic loading - Like many ahead-of-time compilers for real-time/embedded systems, the Ovm does not support dynamic loading of classes. In the future we expect to support this via some form of mixed-mode operation and/or using the JIT compiler.
- weak references and finalization - There is no support for weak references and heap finalizers are never run. Finalizers for objects allocated in RTSJ scoped memory are run.
- Non-core JDK APIs that rely on native code - Ovm does not support the AWT and other APIs that are non-core. Ovm depends on GNU Classpath for all of the JDK APIs, but must provide its own special code to replace all native calls.
- JNI support - Ovm does not support JNI and it is not planned at the present. Much native code is replaced in Ovm by Java code operating in what we term the "executive domain". There are ways to provide additional native code support but there are highly specialized and not intended for general application use.
Code using dynamic loading, native calls or finalizers will need to be adapted to work with Ovm.
The implementation of the real-time APIs is also incomplete - see the package.html file in src/syslib/user/ovm_realtime/javax/realtime for details.
This is a BETA release. Ovm still has known bugs that can lead to unexpected behavior, especially when migrating large applications to Ovm.
Usage
Ovm is regularly tested on Linux/x86, Linux/ppc, and OS X/ppc. The JIT only works on x86. Ovm requires a Sun, IBM, or Apple release of Java 1.4 and gcc 3.x to build. 256 MB of main memory are also required, 1 GB are recommended.
In order to run Java applications under Ovm, it is strongly recommended that you compile the applications against Ovms version of the JDK (which is based on GNU classpath). This is the easiest way to ensure that you do not rely on library functionality that is not available. Instructions on how to compile Java code against the Ovm JDK are in the file TUTORIAL. The TUTORIAL also describes how to run the SPEC JVM and the real-time benchmarks.
Also note that all class files must have been compiled to the format defined by the javac -target 1.1 setting. This restriction will be removed in the future.
At this point in time, Ovm always requires whole-world compilation of the application. Ovm has three execution backends, an interpreter, a JIT and J2C which is a front-end to GCC. Both the interpreter and the JIT are intended to be used in conjunction with dynamic loading in the future. At this stage, building Ovm with these configurations is only useful for development purposes. All benchmarking should always be done with the J2C configuration with gcc-3.4.
Version restrictions:
- The Ovm program (gen-ovm), may very rarely hang after calling out to a subprocess. This appears to be a bug in Linux implemenations of Java 1.4, and occurs more frequently with Blackdown Java distributions than Sun. Ovm attempts to detect and work around the problem, but this code is extremely difficult to test. One simple trick that sometimes unhangs things is to stop the process (use -Z) and then restart it using fg.
<<lessThis VM can (and currently must) be specialized to a particular application. Ovm is currently able generate virtual machines for ordinary Java programs, and programs written to the Real-time Specification for Java.
Main features:
- dynamic loading - Like many ahead-of-time compilers for real-time/embedded systems, the Ovm does not support dynamic loading of classes. In the future we expect to support this via some form of mixed-mode operation and/or using the JIT compiler.
- weak references and finalization - There is no support for weak references and heap finalizers are never run. Finalizers for objects allocated in RTSJ scoped memory are run.
- Non-core JDK APIs that rely on native code - Ovm does not support the AWT and other APIs that are non-core. Ovm depends on GNU Classpath for all of the JDK APIs, but must provide its own special code to replace all native calls.
- JNI support - Ovm does not support JNI and it is not planned at the present. Much native code is replaced in Ovm by Java code operating in what we term the "executive domain". There are ways to provide additional native code support but there are highly specialized and not intended for general application use.
Code using dynamic loading, native calls or finalizers will need to be adapted to work with Ovm.
The implementation of the real-time APIs is also incomplete - see the package.html file in src/syslib/user/ovm_realtime/javax/realtime for details.
This is a BETA release. Ovm still has known bugs that can lead to unexpected behavior, especially when migrating large applications to Ovm.
Usage
Ovm is regularly tested on Linux/x86, Linux/ppc, and OS X/ppc. The JIT only works on x86. Ovm requires a Sun, IBM, or Apple release of Java 1.4 and gcc 3.x to build. 256 MB of main memory are also required, 1 GB are recommended.
In order to run Java applications under Ovm, it is strongly recommended that you compile the applications against Ovms version of the JDK (which is based on GNU classpath). This is the easiest way to ensure that you do not rely on library functionality that is not available. Instructions on how to compile Java code against the Ovm JDK are in the file TUTORIAL. The TUTORIAL also describes how to run the SPEC JVM and the real-time benchmarks.
Also note that all class files must have been compiled to the format defined by the javac -target 1.1 setting. This restriction will be removed in the future.
At this point in time, Ovm always requires whole-world compilation of the application. Ovm has three execution backends, an interpreter, a JIT and J2C which is a front-end to GCC. Both the interpreter and the JIT are intended to be used in conjunction with dynamic loading in the future. At this stage, building Ovm with these configurations is only useful for development purposes. All benchmarking should always be done with the J2C configuration with gcc-3.4.
Version restrictions:
- The Ovm program (gen-ovm), may very rarely hang after calling out to a subprocess. This appears to be a bug in Linux implemenations of Java 1.4, and occurs more frequently with Blackdown Java distributions than Sun. Ovm attempts to detect and work around the problem, but this code is extremely difficult to test. One simple trick that sometimes unhangs things is to stop the process (use -Z) and then restart it using fg.
Download (9.4MB)
Added: 2005-04-22 License: GPL (GNU General Public License) Price:
1670 downloads
Jikes 1.22
Jikes is a Java compiler that translates Java source into bytecoded instruction sets more>>
JikesTM is a compiler that translates JavaTM source files as defined in The Java Language Specification into the bytecoded instruction set and binary format defined in The Java Virtual Machine Specification.
You may wonder why the world needs another Java compiler, considering that Sun provides javac free with its SDK. Jikes has five advantages that make it a valuable contribution to the Java community:
* Open source. Jikes is OSI Certified Open Source Software. OSI Certified is a certification mark of the Open Source Initiative.
* Strictly Java compatible. Jikes strives to adhere to both The Java Language Specification and The Java Virtual Machine Specification as tightly as possible, and does not support subsets, supersets, or other variations of the language. The FAQ describes some of the side effects of this strict language conformance.
* High performance. Jikes is a high performance compiler, making it ideal for use with larger projects.
* Dependency analysis. Jikes performs a dependency analysis on your code that provides two very useful features: Incremental builds and makefile generation.
* Constructive Assistance. Jikes strives to help the programmer write better code in two key ways. Jikes has always strived to provide clear error and warning text to assist the programmer in understanding problems, and now with release 1.19 Jikes helps point out common programming mistakes as documented in Effective Java.
Abridged from a FAQ entry which was adapted from some material by Lou Grinzo for an article he wrote.
The fact that Jikes is a high-performance, highly compatible Java compiler that can be used on almost any computing platform makes it an interesting program and worth investigating for almost any Java programmer. But Jikes is also notable because it lies at the center of two events: the adoption of open source philosophy and practice by large corporations, and the continued growth of Java for Linux.
Its worth pointing out that Jikes is not, and is not intended to be, a complete development environment -- it is simply a command line compiler. It should not be considered a replacement for more complete tools, such as Source Navigator or IBMs VisualAge for Java which provide sophisticated graphical IDEs (Integrated Development Environments).
The Jikes compiler was released in binary form in April 1997 on the IBM alphaWorks site. Jikes for Linux was released on 15 July 1998. The response was overwhelming -- Jikes had more downloads in the three months after the announcement than in the fifteen months before the announcement.
Release of Jikes for Linux was soon followed by requests to open up the source. Many notes and comments from users suggested this would be a good idea. The source was released under a liberal license in December 1998 to make a very visible demonstration of IBMs commitment to open standards and to Java Technology, to make Jikes more reliable and accessible, to encourage more widespread use of Java Technology, to encourage standardization of Java Technology, and to gain some experience actually running an open source project. This marked the start of one of IBMs first efforts in the open source arena.
The original alphaWorks version of Jikes was written by Philippe Charles and Dave Shields of the IBM T. J. Watson Research Center. Since the release of the source they have continued to work on the compiler as contributors; however recently have officially been moved on to other projects within IBM. Today there are no IBMers who work on Jikes as part of their job description. Jikes survives today soley based on the free time contributions of members of the open source community.
The source code is available under IBMs Public License, which has been approved by the OSI (Open Source Initiative) as a fully certified open source license. The project provides access to the complete CVS development tree, which includes not only Jikes, but also the source for the Jacks Test Suite and the Jikes Parser Generator used to build Jikes. Jikes is included in many Open Source Operating Systems. The Jacks Test Suite is a replacement for the Jikestst package.
<<lessYou may wonder why the world needs another Java compiler, considering that Sun provides javac free with its SDK. Jikes has five advantages that make it a valuable contribution to the Java community:
* Open source. Jikes is OSI Certified Open Source Software. OSI Certified is a certification mark of the Open Source Initiative.
* Strictly Java compatible. Jikes strives to adhere to both The Java Language Specification and The Java Virtual Machine Specification as tightly as possible, and does not support subsets, supersets, or other variations of the language. The FAQ describes some of the side effects of this strict language conformance.
* High performance. Jikes is a high performance compiler, making it ideal for use with larger projects.
* Dependency analysis. Jikes performs a dependency analysis on your code that provides two very useful features: Incremental builds and makefile generation.
* Constructive Assistance. Jikes strives to help the programmer write better code in two key ways. Jikes has always strived to provide clear error and warning text to assist the programmer in understanding problems, and now with release 1.19 Jikes helps point out common programming mistakes as documented in Effective Java.
Abridged from a FAQ entry which was adapted from some material by Lou Grinzo for an article he wrote.
The fact that Jikes is a high-performance, highly compatible Java compiler that can be used on almost any computing platform makes it an interesting program and worth investigating for almost any Java programmer. But Jikes is also notable because it lies at the center of two events: the adoption of open source philosophy and practice by large corporations, and the continued growth of Java for Linux.
Its worth pointing out that Jikes is not, and is not intended to be, a complete development environment -- it is simply a command line compiler. It should not be considered a replacement for more complete tools, such as Source Navigator or IBMs VisualAge for Java which provide sophisticated graphical IDEs (Integrated Development Environments).
The Jikes compiler was released in binary form in April 1997 on the IBM alphaWorks site. Jikes for Linux was released on 15 July 1998. The response was overwhelming -- Jikes had more downloads in the three months after the announcement than in the fifteen months before the announcement.
Release of Jikes for Linux was soon followed by requests to open up the source. Many notes and comments from users suggested this would be a good idea. The source was released under a liberal license in December 1998 to make a very visible demonstration of IBMs commitment to open standards and to Java Technology, to make Jikes more reliable and accessible, to encourage more widespread use of Java Technology, to encourage standardization of Java Technology, and to gain some experience actually running an open source project. This marked the start of one of IBMs first efforts in the open source arena.
The original alphaWorks version of Jikes was written by Philippe Charles and Dave Shields of the IBM T. J. Watson Research Center. Since the release of the source they have continued to work on the compiler as contributors; however recently have officially been moved on to other projects within IBM. Today there are no IBMers who work on Jikes as part of their job description. Jikes survives today soley based on the free time contributions of members of the open source community.
The source code is available under IBMs Public License, which has been approved by the OSI (Open Source Initiative) as a fully certified open source license. The project provides access to the complete CVS development tree, which includes not only Jikes, but also the source for the Jacks Test Suite and the Jikes Parser Generator used to build Jikes. Jikes is included in many Open Source Operating Systems. The Jacks Test Suite is a replacement for the Jikestst package.
Download (0.84MB)
Added: 2005-04-18 License: IBM Public License Price:
1661 downloads
Caffeine.NET 0.1.0
Caffeine.NET is a Java .NET interoperability solution. more>>
Caffeine is a free high-performing interoperability solution between the Java platform and the .NET framework.
Caffeines key differentiator is that does not replace the Java Virtual Machine. Instead, your JVM of choice is hosted within the .NET runtime, ensuring that vendor-specific VM optimizations are preserved.
The specific objectives of Caffeine are:
- Run on any combination of .NET runtime (1.0+) and Java Virtual Machine (1.2+).
- Allow full reuse of any Java library from a .NET environment, working exclusively at the API level and avoiding bytecode translation of the actual implementation.
- Provide optimal performance, running the JVM and .NET under the same process and avoiding network or IPC costs.
Caffeine is open source, built for and by developers, and licensed under an MIT/X license that allows Caffeine to be used and/or embedded in commercial software.
Main features:
- Bindings of jobject, jarray, jvalue, jclass, jmethoid, jclassid, jfieldid.
- C# wrapper class generator toolchain from Java library.
- Public and protected classes and methods.
- Inner types, within classes and interfaces.
- Abstract classes and interfaces.
- Object casting.
- Arrays.
- Constants in interfaces.
- Basic temporary interoperability between System.String and java.lang.String.
<<lessCaffeines key differentiator is that does not replace the Java Virtual Machine. Instead, your JVM of choice is hosted within the .NET runtime, ensuring that vendor-specific VM optimizations are preserved.
The specific objectives of Caffeine are:
- Run on any combination of .NET runtime (1.0+) and Java Virtual Machine (1.2+).
- Allow full reuse of any Java library from a .NET environment, working exclusively at the API level and avoiding bytecode translation of the actual implementation.
- Provide optimal performance, running the JVM and .NET under the same process and avoiding network or IPC costs.
Caffeine is open source, built for and by developers, and licensed under an MIT/X license that allows Caffeine to be used and/or embedded in commercial software.
Main features:
- Bindings of jobject, jarray, jvalue, jclass, jmethoid, jclassid, jfieldid.
- C# wrapper class generator toolchain from Java library.
- Public and protected classes and methods.
- Inner types, within classes and interfaces.
- Abstract classes and interfaces.
- Object casting.
- Arrays.
- Constants in interfaces.
- Basic temporary interoperability between System.String and java.lang.String.
Download (0.48MB)
Added: 2005-04-22 License: MIT/X Consortium License Price:
1649 downloads
jclasslib bytecode viewer 3.0
jclasslib bytecode viewer is a Java bytecode viewer and class modification library. more>>
JProfiler is an award-winning all-in-one Java profiler. JProfilers intuitive GUI helps you find performance bottlenecks, pin down memory leaks and resolve threading issues.
Even though JProfiler has a powerful feature set, its a Java profiler that is extremely easy to use! JProfilers user interface provides a unified view on the profiled application and puts all the information you need right at your fingertips with its intuitive hierarchy of views.
Configure your application for profiling
When starting up JProfiler, the start center is brought up. Here you can manage and start your profiling sessions. To configure your application for profiling, change to the "New session" tab and click on the New session button. Enter the required information into the session config dialog as described below and select Ok to start profiling. Thats all it takes. Note the Help button which appears on all of JProfilers dialogs displays a context sensitive explanation of all features.
While the configuration dialog displays numerous options that you will not want to miss after becoming familiar with JProfiler, entering the basic pieces of information is really very simple:
1. Enter a name for your session.
2. Enter the name of your main class.
3. Enter your class path.
4. Press Ok.
Before profiling is actually started, the profiling settings dialog is displayed where you can select the focus for your profiling run. Although profiling produces an overhead when running your application, you can minimize it by choosing a setting for which JProfiler only records information that is interesting for you.
If you want to fine-tune your profiling settings, the [Edit] button brings up a dialog with all available configuration options for profiling.
Observe classes and allocations
To find out what is going on the heap in terms of objects and classes, turn to the classes monitor. It gives you continuous updates and lets you set marks to observe changes over time. To see references, allocations and object data for your selection, you can take a snapshot by clicking on the camera in JProfilers toolbar.
If you want to know where your objects are allocated, you can go to the allocation monitor. Here, you can inspect the call tree and find out what method calls have caused the allocation of a selected class or package. Just like in the allocation monitor, you can display this data for live and garbage collected objects.
An cumulated overview on which methods are responsible for allocations is given by the allocation hot spots view. Each hot spot can be expanded and the backtraces that lead to the invocation of the hot spot are displayed. You can also mark the current values and view the differences in allocations over time.
Find memory leaks
JProfilers heap walker works like a browser: it displays a current set of objects that can be changed by adding selection steps with the [Use selected] button. You can inspect the current object set in the four views of the heap walker.
In the classes view, you can select one or several classes and add a selection step. The new object set will contain only the selected instances. This is often the first thing you want to do after taking a snapshot. You can perform this step automatically by invoking the heap walker from the classes monitor.
The allocations view of the heap walker shows the allocation tree and the allocation hot spot list of the current object set. You can add a selection step for one or multiple allocation spots or hot spots. The new object set will then be restricted to the selected instances only.
When youre looking for the cause of a memory leak, the reference view is the most important view in JProfiler. Here, you can find out why an object has not been garbage collected. Use the "Show path to GC root" function to show where the JVM hangs on to the selected instance.
Not only is the heap walker your first stop for finding memory leaks, it also makes for an excellent debugging facility. In the data view, you can inspect instances, arrays and classes in the current object set and navigate along references. There are many situations where the usual debugging approach will fail and JProfiler will help you find out.
Zoom in on performance bottlenecks
Controlling your applications performance may be driven by quality of service constraints or by general quality assurance, JProfilers CPU views lend themselves naturally to both approaches.
To record CPU data, you switch to the CPU section and click on the recording button in JProfilers tool bar. The first view in the CPU section shows the invocation tree, cumulated for all threads. To find performance related problem spots, just follow the big percentages when opening the tree nodes. Also, the absolute times and the number of invocations that are displayed for each node can help you in getting a feeling for the situation. Once you become familiar with JProfiler, you may want to customize this view to best fit your personal preferences.
The invocation tree is a top-down view on the method calls of your application. This viewpoint is most useful when you experience an actual performance bottleneck in your application. If you want to improve overall performance, a bottom-up view may be more applicable.
This kind of view - called hot spots view - shows the methods where most of the time is spent. By opening these nodes you get backtraces which show the various invocation paths together with the percentages of their contributions. Note that by default, method calls within Java core classes are not shown separately - each of your library calls is treated as opaque. You can change this behavior by deactivating the corresponding filter sets.
The method graph combines both viewpoints. Incoming and outgoing method calls are presented in the same way. For a number of situations, the method graph can give you more insight than the invocation tree and the hot spots view. The best strategy is to use the invocation and hot spots views first and switch to the method graph for detailed analysis.
Solve thread-related problems
Threads can be exceptionally difficult to debug, especially if you dont have sufficient information on the actual sequence and status of the threads in your application. JProfilers thread views provide you with exactly this knowledge.
The thread history view shows a continuous update of the lifelines of all threads on the horizontal axis. The names of the threads are displayed on the vertical axis in the order of their creation. Each color signifies a different thread status. Orange means that the thread was sleeping, green stands for a runnable thread while red is displayed if the thread was waiting for a monitor. You can zoom in and out to your desired detail level or have the time axis fit your windows size automatically.
If youre more interested in whats happening right now, the thread monitor view is the right place to look at. Here, you can sort threads, filter with respect to thread status and view additional information on each thread.
Should you ever have a deadlock in your application, the deadlock detection graph will help you analyze the involved threads and the locking situation. Simple deadlocks like the one shown could be worked out by hand from the other views, but for complicated deadlock involving a greater number of threads this view is indispensable.
Reducing general monitor contention and debugging locking sequences requires a detailed view of the current monitor usage and a history of all monitor-related events. JProfiler has both. Below you see the monitor usage history which shows a blocking event together with the stack trace of the waiting thread.
Keep an eye on your JVM
Monitoring cumulative parameters of the virtual machine can be a highly fruitful activity, even if everything seems to be all right. Measuring and observing parameters like heap size, object count, loaded classes and thread numbers can point to dangerous trends and problematic behavior to look out for. In its VM telemetry view section, JProfiler features various telemetry controls which provide you with the information you need to stay one step ahead.
The number of objects on the heap, split in arrays and non-arrays. This is your first stop if you are suspecting a memory leak. All objects with live references are included, as well as those which are unreferenced but the garbage collector hasnt had a chance to collect yet.
The garbage collector activity which displays freed and moved objects. If your application is thrashing the heap excessively, this will show up here. Moving large numbers of objects places a high burden on the virtual machine and can lead to temporary freezes. Mostly this occurs when the virtual machine is enlarging the heap.
The number of threads in the virtual machine, split in active and inactive threads. This is useful if you create a large number of threads and need information on changes in their total number and how many of them actually run.
Enhancements:
- New futures:
- rewritten eclipse 3.x integration
- rewritten IDEA 4.x integration
- IDE integration for JDeveloper
- IDE integration for Netbeans 4.0
- considerably reduced memory consumption
- improved long-term stability for profiling
- heap walker: in the cumulated incoming reference view, reference holders as well as referenced objects can be displayed and selected
- option to keep the profiled JVM alive
- support for Java Web Start 1.5
- CSV export for graphs
- enhancements in XML export for trees
- integration wizard for profiling servers in IBM WSAD
- integration wizards for Pramati 3.5 and Pramati 4.x application server
- integration wizard for Websphere 4.0 Advanced Edition
- integration wizard for Sun Java System Web Server
- integration wizard for Sun Java System Application Server
- integration wizard for Oracle 10g Application server
- integration wizard for Apple WebObjects Developer 5.x
- snapshot files (*.jps) can be opened from the command line and from the Windows explorer
- JBuilder IDE integration now supports JBuilder 2005
- much better appearance of the JProfiler GUI with Windows native look and feel
- JProfiler GUI now also runs under Java 1.5
- Bug fixes:
- monitor statistics were broken
- invalid class files caused a shutdown of the profiled application
- many bug fixes in the GUI
<<lessEven though JProfiler has a powerful feature set, its a Java profiler that is extremely easy to use! JProfilers user interface provides a unified view on the profiled application and puts all the information you need right at your fingertips with its intuitive hierarchy of views.
Configure your application for profiling
When starting up JProfiler, the start center is brought up. Here you can manage and start your profiling sessions. To configure your application for profiling, change to the "New session" tab and click on the New session button. Enter the required information into the session config dialog as described below and select Ok to start profiling. Thats all it takes. Note the Help button which appears on all of JProfilers dialogs displays a context sensitive explanation of all features.
While the configuration dialog displays numerous options that you will not want to miss after becoming familiar with JProfiler, entering the basic pieces of information is really very simple:
1. Enter a name for your session.
2. Enter the name of your main class.
3. Enter your class path.
4. Press Ok.
Before profiling is actually started, the profiling settings dialog is displayed where you can select the focus for your profiling run. Although profiling produces an overhead when running your application, you can minimize it by choosing a setting for which JProfiler only records information that is interesting for you.
If you want to fine-tune your profiling settings, the [Edit] button brings up a dialog with all available configuration options for profiling.
Observe classes and allocations
To find out what is going on the heap in terms of objects and classes, turn to the classes monitor. It gives you continuous updates and lets you set marks to observe changes over time. To see references, allocations and object data for your selection, you can take a snapshot by clicking on the camera in JProfilers toolbar.
If you want to know where your objects are allocated, you can go to the allocation monitor. Here, you can inspect the call tree and find out what method calls have caused the allocation of a selected class or package. Just like in the allocation monitor, you can display this data for live and garbage collected objects.
An cumulated overview on which methods are responsible for allocations is given by the allocation hot spots view. Each hot spot can be expanded and the backtraces that lead to the invocation of the hot spot are displayed. You can also mark the current values and view the differences in allocations over time.
Find memory leaks
JProfilers heap walker works like a browser: it displays a current set of objects that can be changed by adding selection steps with the [Use selected] button. You can inspect the current object set in the four views of the heap walker.
In the classes view, you can select one or several classes and add a selection step. The new object set will contain only the selected instances. This is often the first thing you want to do after taking a snapshot. You can perform this step automatically by invoking the heap walker from the classes monitor.
The allocations view of the heap walker shows the allocation tree and the allocation hot spot list of the current object set. You can add a selection step for one or multiple allocation spots or hot spots. The new object set will then be restricted to the selected instances only.
When youre looking for the cause of a memory leak, the reference view is the most important view in JProfiler. Here, you can find out why an object has not been garbage collected. Use the "Show path to GC root" function to show where the JVM hangs on to the selected instance.
Not only is the heap walker your first stop for finding memory leaks, it also makes for an excellent debugging facility. In the data view, you can inspect instances, arrays and classes in the current object set and navigate along references. There are many situations where the usual debugging approach will fail and JProfiler will help you find out.
Zoom in on performance bottlenecks
Controlling your applications performance may be driven by quality of service constraints or by general quality assurance, JProfilers CPU views lend themselves naturally to both approaches.
To record CPU data, you switch to the CPU section and click on the recording button in JProfilers tool bar. The first view in the CPU section shows the invocation tree, cumulated for all threads. To find performance related problem spots, just follow the big percentages when opening the tree nodes. Also, the absolute times and the number of invocations that are displayed for each node can help you in getting a feeling for the situation. Once you become familiar with JProfiler, you may want to customize this view to best fit your personal preferences.
The invocation tree is a top-down view on the method calls of your application. This viewpoint is most useful when you experience an actual performance bottleneck in your application. If you want to improve overall performance, a bottom-up view may be more applicable.
This kind of view - called hot spots view - shows the methods where most of the time is spent. By opening these nodes you get backtraces which show the various invocation paths together with the percentages of their contributions. Note that by default, method calls within Java core classes are not shown separately - each of your library calls is treated as opaque. You can change this behavior by deactivating the corresponding filter sets.
The method graph combines both viewpoints. Incoming and outgoing method calls are presented in the same way. For a number of situations, the method graph can give you more insight than the invocation tree and the hot spots view. The best strategy is to use the invocation and hot spots views first and switch to the method graph for detailed analysis.
Solve thread-related problems
Threads can be exceptionally difficult to debug, especially if you dont have sufficient information on the actual sequence and status of the threads in your application. JProfilers thread views provide you with exactly this knowledge.
The thread history view shows a continuous update of the lifelines of all threads on the horizontal axis. The names of the threads are displayed on the vertical axis in the order of their creation. Each color signifies a different thread status. Orange means that the thread was sleeping, green stands for a runnable thread while red is displayed if the thread was waiting for a monitor. You can zoom in and out to your desired detail level or have the time axis fit your windows size automatically.
If youre more interested in whats happening right now, the thread monitor view is the right place to look at. Here, you can sort threads, filter with respect to thread status and view additional information on each thread.
Should you ever have a deadlock in your application, the deadlock detection graph will help you analyze the involved threads and the locking situation. Simple deadlocks like the one shown could be worked out by hand from the other views, but for complicated deadlock involving a greater number of threads this view is indispensable.
Reducing general monitor contention and debugging locking sequences requires a detailed view of the current monitor usage and a history of all monitor-related events. JProfiler has both. Below you see the monitor usage history which shows a blocking event together with the stack trace of the waiting thread.
Keep an eye on your JVM
Monitoring cumulative parameters of the virtual machine can be a highly fruitful activity, even if everything seems to be all right. Measuring and observing parameters like heap size, object count, loaded classes and thread numbers can point to dangerous trends and problematic behavior to look out for. In its VM telemetry view section, JProfiler features various telemetry controls which provide you with the information you need to stay one step ahead.
The number of objects on the heap, split in arrays and non-arrays. This is your first stop if you are suspecting a memory leak. All objects with live references are included, as well as those which are unreferenced but the garbage collector hasnt had a chance to collect yet.
The garbage collector activity which displays freed and moved objects. If your application is thrashing the heap excessively, this will show up here. Moving large numbers of objects places a high burden on the virtual machine and can lead to temporary freezes. Mostly this occurs when the virtual machine is enlarging the heap.
The number of threads in the virtual machine, split in active and inactive threads. This is useful if you create a large number of threads and need information on changes in their total number and how many of them actually run.
Enhancements:
- New futures:
- rewritten eclipse 3.x integration
- rewritten IDEA 4.x integration
- IDE integration for JDeveloper
- IDE integration for Netbeans 4.0
- considerably reduced memory consumption
- improved long-term stability for profiling
- heap walker: in the cumulated incoming reference view, reference holders as well as referenced objects can be displayed and selected
- option to keep the profiled JVM alive
- support for Java Web Start 1.5
- CSV export for graphs
- enhancements in XML export for trees
- integration wizard for profiling servers in IBM WSAD
- integration wizards for Pramati 3.5 and Pramati 4.x application server
- integration wizard for Websphere 4.0 Advanced Edition
- integration wizard for Sun Java System Web Server
- integration wizard for Sun Java System Application Server
- integration wizard for Oracle 10g Application server
- integration wizard for Apple WebObjects Developer 5.x
- snapshot files (*.jps) can be opened from the command line and from the Windows explorer
- JBuilder IDE integration now supports JBuilder 2005
- much better appearance of the JProfiler GUI with Windows native look and feel
- JProfiler GUI now also runs under Java 1.5
- Bug fixes:
- monitor statistics were broken
- invalid class files caused a shutdown of the profiled application
- many bug fixes in the GUI
Download (1.7MB)
Added: 2005-04-22 License: GPL (GNU General Public License) Price:
1648 downloads
Jesktop 2.0
Jesktop is a platform-independant Java-based desktop system. more>>
The Jesktop project is a desktop system written in Java that can have GUI applications installed into it. It is semi-dependant upon NanoContainer which is a component framework at Codehaus. NanoContainer and Constructor Dependency Injection are going to change the way we think of Java based component computing.
Jesktop has been under construction since November 2000. Its team was founded by people building Williams Portable Java Environment (PJE) since early 2000.
- To have a fully functional Java desktop environment running on a fully functional Java operating system that is portable across a number of host operating systems, or if there is JDK support in a BIOS layer, without a host operating system.
- To have a single CD installation of Linux (or other Java capable OS) without its own applications, but with NanoContainer, Jesktop and many Java apps pre-configured.
- To see the Jesktop and NanoContainer used widely by Java enthusiasts and deployed on yet to be created Network appliances and palm sized devices (when palm sized devices support J2SE). Thats right, we see this running on small devices. The attraction to hardware manufactureres is obvious - a standard open source OS layer that can support multiple applications safely.
- To see thousands of GPL, MPL, SPL, Commercial etc. etc. apps runnable inside Jesktop. All will be hot installable, reinstallable and de-installable. No reboot/restart necessary. No questions asked.
Main features:
- Multiple GUI applications running inside the same virtual machine.
- Multiple server applications running inside the same virtual machine.
- Drag and drop between applications (to finish)
- Mime type associations for applications (to finish)
- Many built-in, bundled and ported applications.
- Plugable Window Managers.
- Hot installable applications. Hot deinstallable and reinstallable too.
- Externally skinable applications. Apps dont need their own skin logic.
<<lessJesktop has been under construction since November 2000. Its team was founded by people building Williams Portable Java Environment (PJE) since early 2000.
- To have a fully functional Java desktop environment running on a fully functional Java operating system that is portable across a number of host operating systems, or if there is JDK support in a BIOS layer, without a host operating system.
- To have a single CD installation of Linux (or other Java capable OS) without its own applications, but with NanoContainer, Jesktop and many Java apps pre-configured.
- To see the Jesktop and NanoContainer used widely by Java enthusiasts and deployed on yet to be created Network appliances and palm sized devices (when palm sized devices support J2SE). Thats right, we see this running on small devices. The attraction to hardware manufactureres is obvious - a standard open source OS layer that can support multiple applications safely.
- To see thousands of GPL, MPL, SPL, Commercial etc. etc. apps runnable inside Jesktop. All will be hot installable, reinstallable and de-installable. No reboot/restart necessary. No questions asked.
Main features:
- Multiple GUI applications running inside the same virtual machine.
- Multiple server applications running inside the same virtual machine.
- Drag and drop between applications (to finish)
- Mime type associations for applications (to finish)
- Many built-in, bundled and ported applications.
- Plugable Window Managers.
- Hot installable applications. Hot deinstallable and reinstallable too.
- Externally skinable applications. Apps dont need their own skin logic.
Download (0.15MB)
Added: 2005-04-21 License: BSD License Price:
1647 downloads
joeq virtual machine 20030812
joeq virtual machine is a language-independent Java virtual machine implemented in Java. more>>
Joeq is a virtual machine and compiler infrastructure designed to facilitate research in virtual machine technologies such as Just-In-Time and Ahead-Of-Time compilation, advanced garbage collection techniques, distributed computation, sophisticated scheduling algorithms, and advanced run time techniques.
Joeq is entirely implemented in Java, leading to reliability, portability, maintainability, and efficiency. It is also language-independent, so code from any supported language can be seamlessly compiled, linked, and executed -- all dynamically.
Each component of the virtual machine is written to be independent with a general but well-defined interface, making it easy to experiment with new ideas.
Joeq is released as open source software, and is being used as a framework by researchers on five continents on topics ranging from automatic distributed virtual machines to whole-program pointer analysis.
Joeq is a virtual machine and compiler infrastructure designed to be a platform for research in compilation and virtual machine technologies. We had three main goals in designing the system. First and foremost, we wanted the system to be flexible. We are interested in a variety of compiler and virtual machine research topics, and we wanted a system that would not be specific to researching a particular area.
For example, we have interest in both static and dynamic compilation techniques, and in both type-safe and unsafe languages. We wanted a system that would be as open and general as possible, without sacrificing usability or performance.
Second, we wanted the system to be easy to experiment with. As its primary focus is research, it should be straightforward to prototype new ideas in the framework. With this in mind, we tried to make the system as modular as possible, so that each component is easily replaceable. Learning from our experience with Jalapeno, another virtual machine written in Java, we decided to implement the entire system in Java.
This makes it easy to quickly implement and prototype new ideas, and features like garbage collection and exception tracebacks ease debugging and improve productivity. Java, being a dynamic language, is also a good consumer for many of our dynamic compilation techniques; the fact that our dynamic compiler can compile the code of the virtual machine itself means that it can dynamically optimize the virtual machine code with respect to the application that is running on it. Javas object-oriented nature also facilitates modularity of the design and implementation.
Third, we wanted the system to be useful to a wide audience. The fact that the system is written in Java means that much of the system can be used on any platform that has an implementation of a Java virtual machine. The fact that Joeq supports popular input languages like Java, C, C++, Fortran, and even x86 binary code increases the scope of input programs. We released the system on the SourceForge web site as open source under the Library GNU Public License.
It has been picked up by researchers on five continents for various purposes, among them: automatic extraction of component interfaces, static whole-program pointer analysis, context-sensitive call graph construction, automatic distributed computation, versioned type systems for operating systems, sophisticated profiling of applications, advanced dynamic compilation techniques, system checkpointing, anomaly detection, secure execution platforms and autonomous systems. In addition, Joeq is now used as the basis of the Advanced Compilation Techniques class taught at Stanford University.
Joeq supports two modes of operation: native execution and hosted execution. In native execution, the Joeq code runs directly on the hardware. It uses its own run-time routines, thread package, garbage collector, etc. In hosted execution, the Joeq code runs on top of another virtual machine. Operations to access objects are translated into calls into the reflection library of the host virtual machine.
The user code that executes is identical, and only a small amount of functionality involving unsafe operations is not available when running in hosted execution mode. Hosted execution is useful for debugging purposes and when the underlying machine architecture is not yet directly supported by Joeq. We also use hosted execution mode to bootstrap the system and perform checkpointing, a technique for optimizing application startup times.
Joeq system consists of seven major parts:
- Front-end: Handles the loading and parsing of input files, such as Java class files, SUIF files, and binary object files.
- Compiler: A framework for performing analyses and optimizations on code. This includes the intermediate representation (IR) of our compiler.
- Back-end: Converts the compilers intermediate representation into native, executable code. This code can be output to an object file or written into memory to be executed. In addition, it generates metadata about the generated code, such as garbage collection maps and exception handling information.
- Interpreter: Directly interprets the various forms of compiler intermediate representations.
- Memory Manager: Organizes and manages memory. Joeq supports both explicitly-managed and garbage-collected memory.
- Dynamic: Provides profile data to the code analysis and optimization component, makes compilation policy decisions, and drives the dynamic compiler.
- Run-time Support: Provides runtime support for introspection, thread scheduling, synchronization, exception handling, interfacing to external code, and language-specific features such as dynamic type checking.
<<lessJoeq is entirely implemented in Java, leading to reliability, portability, maintainability, and efficiency. It is also language-independent, so code from any supported language can be seamlessly compiled, linked, and executed -- all dynamically.
Each component of the virtual machine is written to be independent with a general but well-defined interface, making it easy to experiment with new ideas.
Joeq is released as open source software, and is being used as a framework by researchers on five continents on topics ranging from automatic distributed virtual machines to whole-program pointer analysis.
Joeq is a virtual machine and compiler infrastructure designed to be a platform for research in compilation and virtual machine technologies. We had three main goals in designing the system. First and foremost, we wanted the system to be flexible. We are interested in a variety of compiler and virtual machine research topics, and we wanted a system that would not be specific to researching a particular area.
For example, we have interest in both static and dynamic compilation techniques, and in both type-safe and unsafe languages. We wanted a system that would be as open and general as possible, without sacrificing usability or performance.
Second, we wanted the system to be easy to experiment with. As its primary focus is research, it should be straightforward to prototype new ideas in the framework. With this in mind, we tried to make the system as modular as possible, so that each component is easily replaceable. Learning from our experience with Jalapeno, another virtual machine written in Java, we decided to implement the entire system in Java.
This makes it easy to quickly implement and prototype new ideas, and features like garbage collection and exception tracebacks ease debugging and improve productivity. Java, being a dynamic language, is also a good consumer for many of our dynamic compilation techniques; the fact that our dynamic compiler can compile the code of the virtual machine itself means that it can dynamically optimize the virtual machine code with respect to the application that is running on it. Javas object-oriented nature also facilitates modularity of the design and implementation.
Third, we wanted the system to be useful to a wide audience. The fact that the system is written in Java means that much of the system can be used on any platform that has an implementation of a Java virtual machine. The fact that Joeq supports popular input languages like Java, C, C++, Fortran, and even x86 binary code increases the scope of input programs. We released the system on the SourceForge web site as open source under the Library GNU Public License.
It has been picked up by researchers on five continents for various purposes, among them: automatic extraction of component interfaces, static whole-program pointer analysis, context-sensitive call graph construction, automatic distributed computation, versioned type systems for operating systems, sophisticated profiling of applications, advanced dynamic compilation techniques, system checkpointing, anomaly detection, secure execution platforms and autonomous systems. In addition, Joeq is now used as the basis of the Advanced Compilation Techniques class taught at Stanford University.
Joeq supports two modes of operation: native execution and hosted execution. In native execution, the Joeq code runs directly on the hardware. It uses its own run-time routines, thread package, garbage collector, etc. In hosted execution, the Joeq code runs on top of another virtual machine. Operations to access objects are translated into calls into the reflection library of the host virtual machine.
The user code that executes is identical, and only a small amount of functionality involving unsafe operations is not available when running in hosted execution mode. Hosted execution is useful for debugging purposes and when the underlying machine architecture is not yet directly supported by Joeq. We also use hosted execution mode to bootstrap the system and perform checkpointing, a technique for optimizing application startup times.
Joeq system consists of seven major parts:
- Front-end: Handles the loading and parsing of input files, such as Java class files, SUIF files, and binary object files.
- Compiler: A framework for performing analyses and optimizations on code. This includes the intermediate representation (IR) of our compiler.
- Back-end: Converts the compilers intermediate representation into native, executable code. This code can be output to an object file or written into memory to be executed. In addition, it generates metadata about the generated code, such as garbage collection maps and exception handling information.
- Interpreter: Directly interprets the various forms of compiler intermediate representations.
- Memory Manager: Organizes and manages memory. Joeq supports both explicitly-managed and garbage-collected memory.
- Dynamic: Provides profile data to the code analysis and optimization component, makes compilation policy decisions, and drives the dynamic compiler.
- Run-time Support: Provides runtime support for introspection, thread scheduling, synchronization, exception handling, interfacing to external code, and language-specific features such as dynamic type checking.
Download (1.0MB)
Added: 2005-04-22 License: LGPL (GNU Lesser General Public License) Price:
1645 downloads
lfyre 0.3.1
lfyre is a programming language and interactive compiler. more>>
Lfyre is a programming language and the interactive compiler for the same language.
Its key features are flexibility, performance and simplicity.
For instance, lfyre code can be compiled or interpreted and can define new language keywords and operators.
Lfyre programming language and interactive compiler aim at many things at once:
first of all, the compiler is really interactive: you can compile, uncompile, run and debug source code from its prompt.
second, lfyre aims at filling the gap between low and high level languages by a modular approach:
the compiler provides a minimal set of features, most notably support for basic types and extensions, while modules written in lfyre provide the rest:
most keywords and operators, classes library, etc.
Lfyre code can be compiled (at the moment by translating it into C) or interpreted by a high performance virtual machine built in the compiler. The virtual machine is used by the compiler to execute and debug source code interactively, or while compiling (this allows a program to define new keywords, whose associated code must run while compiling).
All parts of the compiler (parser, resolver, C and vm translators, virtual machine) can be programmatically accessed from lfyre code. For example, a program can reuse lfyre parser to read a configuration file or can compile some modules at run-time and load them.
Or even, a program may load untrusted or untested code and run it safely inside the virtual machine.
Lfyre interactive compiler is portable, except for some exotic techniques used to speedup the virtual machine. Such speedups can anyway be disabled, obtaining fully portable code.
Lfyre compiled code aims and is expected to run at least as fast as hand-written C.
From the downside, lfyre is a "classic" procedural language with templates, reflection and single inheritance. Some features typical of functional languages are being investigated but are probably out of scope.
The name "lfyre" is a shortcut of Lfyre - a Language designed for FlexibilitY, Reflection and Extensibility.
<<lessIts key features are flexibility, performance and simplicity.
For instance, lfyre code can be compiled or interpreted and can define new language keywords and operators.
Lfyre programming language and interactive compiler aim at many things at once:
first of all, the compiler is really interactive: you can compile, uncompile, run and debug source code from its prompt.
second, lfyre aims at filling the gap between low and high level languages by a modular approach:
the compiler provides a minimal set of features, most notably support for basic types and extensions, while modules written in lfyre provide the rest:
most keywords and operators, classes library, etc.
Lfyre code can be compiled (at the moment by translating it into C) or interpreted by a high performance virtual machine built in the compiler. The virtual machine is used by the compiler to execute and debug source code interactively, or while compiling (this allows a program to define new keywords, whose associated code must run while compiling).
All parts of the compiler (parser, resolver, C and vm translators, virtual machine) can be programmatically accessed from lfyre code. For example, a program can reuse lfyre parser to read a configuration file or can compile some modules at run-time and load them.
Or even, a program may load untrusted or untested code and run it safely inside the virtual machine.
Lfyre interactive compiler is portable, except for some exotic techniques used to speedup the virtual machine. Such speedups can anyway be disabled, obtaining fully portable code.
Lfyre compiled code aims and is expected to run at least as fast as hand-written C.
From the downside, lfyre is a "classic" procedural language with templates, reflection and single inheritance. Some features typical of functional languages are being investigated but are probably out of scope.
The name "lfyre" is a shortcut of Lfyre - a Language designed for FlexibilitY, Reflection and Extensibility.
Download (0.30MB)
Added: 2005-05-30 License: GPL (GNU General Public License) Price:
1608 downloads
JamVM 1.3.1
JamVM is a compact Java Virtual Machine. more>>
JamVM is a new Java Virtual Machine which conforms to the JVM specification version 2 (blue book). In comparison to most other VMs (free and commercial) it is extremely small, with a stripped executable on PowerPC of only ~130K, and Intel 100K.
However, unlike other small VMs (e.g. KVM) it is designed to support the full specification, and includes support for object finalisation, the Java Native Interface (JNI) and the Reflection API.
Main features:
- Uses native threading (posix threads). Full thread implementation including Thread.interrupt()
- Object references are direct pointers (i.e. no handles)
- Supports class loaders
- Efficient thin locks for fast locking in uncontended cases (the majority of locking) without using spin-locking
- Two word object header to minimise heap overhead (lock word and class pointer)
- Execution engine supports basic switched interpreter and threaded interpreter, to minimise dispatch overhead (requires gcc value labels)
- Stop-the-world mark and sweep garbage collector
- Thread suspension uses signals to reduce suspend latency and improve performance (no suspension checks during normal execution)
- Full object finalisation support within the garbage collector (with finaliser thread)
- Garbage collector can run synchronously or asynchronously within its own thread
- String constants within class files are stored in hash table to minimise class data overhead (string constants shared between all classes)
- Supports JNI and dynamic loading for use with standard libraries
- Uses its own lightweight native interface for internal native methods without overhead of JNI
- JamVM is written in C, with a small amount of platform dependent assembler, and is easily portable to other architectures.
Enhancements:
- Re-worked thread suspension enable/disable code
- implemented a fast enable/disable suspend mechanism for critical code sections, which is now used in hash table access and heap allocation :
- much faster object allocation
- much faster primitive array allocation
- faster string interning
- removed some minor potential (as yet unseen) race conditions
- Integrated all outstanding patches
- generics branch patch, implementing VMClass.isEnum(), isAnnotation() and isSynthetic()
- Boot library path patch (support for system property gnu.classpath.boot.library.path)
- Enabled different min/max heap values for each architecture
- ARM values are back to the defaults for JamVM 1.2.5. Default max heap of 128Mb is too large for typical embedded ARM systems.
- Fixed the new compiler warnings from gcc-4.0 (under Mac OS X) related to char/signed char usage.
- Fixed compiler error on gcc-4.0 under Mac OS X 10.4 (duplicate definitions of wait).
- Fixed rare, potential dead-lock in direct.c when preparing methods
- Fixed a bug in VMClassLoader.defineClass(), where offset or length is wrong.
- Fixed bug in DCONST_1 on mixed-endian ARM architectures (this bug was fixed in JamVM 1.2.2 but it crept back in, due to the new interpreter in JamVM 1.2.5).
- Improved thread dump (produced via SIGQUIT, or ctrl-).
- Several other minor bug-fixes, and code tidy-ups.
<<lessHowever, unlike other small VMs (e.g. KVM) it is designed to support the full specification, and includes support for object finalisation, the Java Native Interface (JNI) and the Reflection API.
Main features:
- Uses native threading (posix threads). Full thread implementation including Thread.interrupt()
- Object references are direct pointers (i.e. no handles)
- Supports class loaders
- Efficient thin locks for fast locking in uncontended cases (the majority of locking) without using spin-locking
- Two word object header to minimise heap overhead (lock word and class pointer)
- Execution engine supports basic switched interpreter and threaded interpreter, to minimise dispatch overhead (requires gcc value labels)
- Stop-the-world mark and sweep garbage collector
- Thread suspension uses signals to reduce suspend latency and improve performance (no suspension checks during normal execution)
- Full object finalisation support within the garbage collector (with finaliser thread)
- Garbage collector can run synchronously or asynchronously within its own thread
- String constants within class files are stored in hash table to minimise class data overhead (string constants shared between all classes)
- Supports JNI and dynamic loading for use with standard libraries
- Uses its own lightweight native interface for internal native methods without overhead of JNI
- JamVM is written in C, with a small amount of platform dependent assembler, and is easily portable to other architectures.
Enhancements:
- Re-worked thread suspension enable/disable code
- implemented a fast enable/disable suspend mechanism for critical code sections, which is now used in hash table access and heap allocation :
- much faster object allocation
- much faster primitive array allocation
- faster string interning
- removed some minor potential (as yet unseen) race conditions
- Integrated all outstanding patches
- generics branch patch, implementing VMClass.isEnum(), isAnnotation() and isSynthetic()
- Boot library path patch (support for system property gnu.classpath.boot.library.path)
- Enabled different min/max heap values for each architecture
- ARM values are back to the defaults for JamVM 1.2.5. Default max heap of 128Mb is too large for typical embedded ARM systems.
- Fixed the new compiler warnings from gcc-4.0 (under Mac OS X) related to char/signed char usage.
- Fixed compiler error on gcc-4.0 under Mac OS X 10.4 (duplicate definitions of wait).
- Fixed rare, potential dead-lock in direct.c when preparing methods
- Fixed a bug in VMClassLoader.defineClass(), where offset or length is wrong.
- Fixed bug in DCONST_1 on mixed-endian ARM architectures (this bug was fixed in JamVM 1.2.2 but it crept back in, due to the new interpreter in JamVM 1.2.5).
- Improved thread dump (produced via SIGQUIT, or ctrl-).
- Several other minor bug-fixes, and code tidy-ups.
Download (0.23MB)
Added: 2005-06-17 License: GPL (GNU General Public License) Price:
1593 downloads
SableVM 1.12
SableVM is a portable Java virtual machine. more>>
SableVM is a robust, extremely portable, efficient, and specifications-compliant Java virtual machine that aims to be easy to maintain and to extend.
It features a state-of-the-art and efficient interpreter engine. Its source code is very accessible and easy to understand. It also has many robustness features that have been the object of careful design.
SableVM is a clean-room implementation of the publicly available specifications.
Main features:
- Clean code, with minimal duplication, thanks to a set of easy-to-use indent-friendly m4 macros.
- Modularity, making it ideal for research into different implementations of VM components.
- Standards compliance (C, POSIX, JVM, JNI, JLS).
- Three different interpreter engines, of which the basic switch interpreter is perfect for debugging, and the inlined-threaded interpreter is competitively fast. See [Execution Engines]?.
- A nice development environment, thanks to the above features. New contributors can start grokking it easily.
- Use of the latest GNU Classpath. We frequently synchronize with the GNU Classpath CVS.
- Portability (record time is 1 hour for a new port).
- Permissive LGPL license.
- A retargettable just-in-time compiler, SableJIT, which currently runs on ppc, x86, and sparc. The initial implementation is almost ready.
- Proper implementation of the invocation interface, which makes it possible to execute Java code from an application written in a different language. SableVM was designed so that extending it to follow the full specifications is straightforward, and allows for many virtual machines to be created, run, and destroyed within a single process (still not fully complete). This is something that the official Sun implementation does not provide.
<<lessIt features a state-of-the-art and efficient interpreter engine. Its source code is very accessible and easy to understand. It also has many robustness features that have been the object of careful design.
SableVM is a clean-room implementation of the publicly available specifications.
Main features:
- Clean code, with minimal duplication, thanks to a set of easy-to-use indent-friendly m4 macros.
- Modularity, making it ideal for research into different implementations of VM components.
- Standards compliance (C, POSIX, JVM, JNI, JLS).
- Three different interpreter engines, of which the basic switch interpreter is perfect for debugging, and the inlined-threaded interpreter is competitively fast. See [Execution Engines]?.
- A nice development environment, thanks to the above features. New contributors can start grokking it easily.
- Use of the latest GNU Classpath. We frequently synchronize with the GNU Classpath CVS.
- Portability (record time is 1 hour for a new port).
- Permissive LGPL license.
- A retargettable just-in-time compiler, SableJIT, which currently runs on ppc, x86, and sparc. The initial implementation is almost ready.
- Proper implementation of the invocation interface, which makes it possible to execute Java code from an application written in a different language. SableVM was designed so that extending it to follow the full specifications is straightforward, and allows for many virtual machines to be created, run, and destroyed within a single process (still not fully complete). This is something that the official Sun implementation does not provide.
Download (0.69MB)
Added: 2005-07-07 License: LGPL (GNU Lesser General Public License) Price:
1575 downloads
Open Beat Box 0.7.1
Open Beat Box (OBB) is an open-source beat box ( a virtual drum machine ). more>>
Open Beat Box (OBB) is an open-source beat box ( a virtual drum machine ).
We are still in an early stage of development but we aim full drum machine functionalities.
Main features:
- Highly customizable graphical interface, including bitmap skins and variable shape widgets.
- Floating tools : realy interesting with multi-screen.
- Skin aware help system that update the images acording to the skin you curently use.
- Plug-in architecture for sound effects.
- Portability : Windows, Mac, Unix
- Cross-platform file compatiblitily.
- Real-time preview and offline rendering for realy complex effect that cant be added real-time on your machine
- Distributed rendering over multiple computers.
- Customizable sound sample packages.
- Customizable keyboard shortcuts.
- Matel Power glove input driver.
Enhancements:
- Code major restructuration
- More performance
- Added XML Skins
- Gui enhancements (drop shadow on labels, centered spinbox label, mousescroll on slidebars)
<<lessWe are still in an early stage of development but we aim full drum machine functionalities.
Main features:
- Highly customizable graphical interface, including bitmap skins and variable shape widgets.
- Floating tools : realy interesting with multi-screen.
- Skin aware help system that update the images acording to the skin you curently use.
- Plug-in architecture for sound effects.
- Portability : Windows, Mac, Unix
- Cross-platform file compatiblitily.
- Real-time preview and offline rendering for realy complex effect that cant be added real-time on your machine
- Distributed rendering over multiple computers.
- Customizable sound sample packages.
- Customizable keyboard shortcuts.
- Matel Power glove input driver.
Enhancements:
- Code major restructuration
- More performance
- Added XML Skins
- Gui enhancements (drop shadow on labels, centered spinbox label, mousescroll on slidebars)
Download (1.1MB)
Added: 2005-08-18 License: GPL (GNU General Public License) Price:
1535 downloads
Java Jukebox 1.12
Java Jukebox is a multiuser music server capable of selecting music appropriate to its current listeners. more>>
jjukebox is a multiuser music server capable of selecting music appropriate to its current listeners. Its robust enough for you to store your music (for example, the popular mp3 format) over different locations (network drives, cdroms) and not hang when any device fails.
The music server has been designed around reliability and extensibility, making it extremely reliable even when running under very dubious circumstances.
There is no limit to the amount of music other than the resources of the computer that you are running jjukebox on, or what types of music you can add to the music server, jjukebox can play many different types of music format thanks to Suns JavaMedia framework, and JavaZooms JavaLayerPlayer
Main features:
- Robust management of music mounted on other computers - if a remote computer becomes unreachable jjukebox automatically unmounts all the music stored on it without affecting play.
- Ratings system - so that people can rate tracks they like/hate and jjukebox will do its best to only play tracks people currently logged into it like.
- Programmable fading between tracks for smooth music transitions.
- Coded in pure java - can run on any platform with a conforming Java Virtual Machine
Enhancements:
Added in this release:
- A new looping queue - Plays the current queue forever.
- Faster magazine loading and saving.
- Beta GUI Client.
- Beta DAAP server.
Fixes for this releaes:
- Installer bugs from previous versions fixed - GNOME and KDE shortcuts are now correctly created.
- Play bug where player would sometimes randomly stop playing between tracks has been fixed.
- Increased playback buffer to help prevent skipping on slower machines.
- Client/Server code tidied up and fixes done mainly concerning server responses.
- Updated player jars, and a fix for 1.5 (Java 5) vm where volume setting would cause an exception when a new track was started.
- Multicast DNS fixes, this will form part of server clustering and easy server locating for the GUI client.
<<lessThe music server has been designed around reliability and extensibility, making it extremely reliable even when running under very dubious circumstances.
There is no limit to the amount of music other than the resources of the computer that you are running jjukebox on, or what types of music you can add to the music server, jjukebox can play many different types of music format thanks to Suns JavaMedia framework, and JavaZooms JavaLayerPlayer
Main features:
- Robust management of music mounted on other computers - if a remote computer becomes unreachable jjukebox automatically unmounts all the music stored on it without affecting play.
- Ratings system - so that people can rate tracks they like/hate and jjukebox will do its best to only play tracks people currently logged into it like.
- Programmable fading between tracks for smooth music transitions.
- Coded in pure java - can run on any platform with a conforming Java Virtual Machine
Enhancements:
Added in this release:
- A new looping queue - Plays the current queue forever.
- Faster magazine loading and saving.
- Beta GUI Client.
- Beta DAAP server.
Fixes for this releaes:
- Installer bugs from previous versions fixed - GNOME and KDE shortcuts are now correctly created.
- Play bug where player would sometimes randomly stop playing between tracks has been fixed.
- Increased playback buffer to help prevent skipping on slower machines.
- Client/Server code tidied up and fixes done mainly concerning server responses.
- Updated player jars, and a fix for 1.5 (Java 5) vm where volume setting would cause an exception when a new track was started.
- Multicast DNS fixes, this will form part of server clustering and easy server locating for the GUI client.
Download (3.1MB)
Added: 2005-10-14 License: GPL (GNU General Public License) Price:
1477 downloads
Jolt 0.7.1
Jolt is a Java Virtual Machine Daemon. more>>
Jolt is a Java Virtual Machine Daemon. This program provides a means to invoke the JDK tools javac, javadoc, and jar from the command line while reusing the same JVM instance across invocations.
Jolt daemon is intended primarily for use as a helper tool to make compilation of Java code with make as fast as (and potentially faster than) with Jakarta Ant.
It can also be used to run arbitrary Java programs (as with java); this is particularly useful for command-line utilities that are run over and over, where the cost of launching the JVM each time would be prohibitive (or at the very least, annoying).
Usage:
The `runjolt shell script can be used as a wrapper for the `jolt binary. It checks for the presence of the JAVA_HOME environment variable (which should be set to the top-level installation directory of JDK 1.4.0 or later) and augments LD_LIBRARY_PATH accordingly before invoking `jolt proper.
<<lessJolt daemon is intended primarily for use as a helper tool to make compilation of Java code with make as fast as (and potentially faster than) with Jakarta Ant.
It can also be used to run arbitrary Java programs (as with java); this is particularly useful for command-line utilities that are run over and over, where the cost of launching the JVM each time would be prohibitive (or at the very least, annoying).
Usage:
The `runjolt shell script can be used as a wrapper for the `jolt binary. It checks for the presence of the JAVA_HOME environment variable (which should be set to the top-level installation directory of JDK 1.4.0 or later) and augments LD_LIBRARY_PATH accordingly before invoking `jolt proper.
Download (0.11MB)
Added: 2005-12-09 License: GPL (GNU General Public License) Price:
1416 downloads
UMLMON 1.0.3
UMLMON is a complete run time environment for User Mode Linux. more>>
UMLMON is a complete run time environment for User Mode Linux. There is a separate monitor daemon for every VM.
UMLMON project creates the run time environment and starts the VM by executing the UML kernel. The daemon also determines the arguments that are passed to the UML kernel, and includes special support to set up arguments for memory size, virtual disks, virtual network interfaces, and console channels in a convenient way.
UMLMON also includes routines to do certain administration tasks like the creation of disks.
The team UMLMON + UML can be applied in the following areas:
- Server consolidation: Improve the utilization of server hardware, and ease the operation of servers.
- Virtual security zones: Instead of building demilitarized zones (DMZ) with real hardware, it is a cost-effective alternative to set up purely virtual DMZs on a single host.
- Virtual hosting: A cheap version of server hosting is virtual hosting; instead of leasing real computers to customers, virtual machines are used.
- Laboratory nets: By using virtual machines it is possible to build cheap laboratory nets, e.g. to test software in real network environments.
- Training environments: One can use virtual machines for Linux trainings where participants can get true administrators priviledges without any risks.
Enhancements:
- This release no longer call the problematic glibc function getgrouplist, which is often broken (symptom: segmentation fault immediately after starting umlmon).
<<lessUMLMON project creates the run time environment and starts the VM by executing the UML kernel. The daemon also determines the arguments that are passed to the UML kernel, and includes special support to set up arguments for memory size, virtual disks, virtual network interfaces, and console channels in a convenient way.
UMLMON also includes routines to do certain administration tasks like the creation of disks.
The team UMLMON + UML can be applied in the following areas:
- Server consolidation: Improve the utilization of server hardware, and ease the operation of servers.
- Virtual security zones: Instead of building demilitarized zones (DMZ) with real hardware, it is a cost-effective alternative to set up purely virtual DMZs on a single host.
- Virtual hosting: A cheap version of server hosting is virtual hosting; instead of leasing real computers to customers, virtual machines are used.
- Laboratory nets: By using virtual machines it is possible to build cheap laboratory nets, e.g. to test software in real network environments.
- Training environments: One can use virtual machines for Linux trainings where participants can get true administrators priviledges without any risks.
Enhancements:
- This release no longer call the problematic glibc function getgrouplist, which is often broken (symptom: segmentation fault immediately after starting umlmon).
Download (3.2MB)
Added: 2006-01-08 License: GPL (GNU General Public License) Price:
1384 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above virtual machine search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed