Forum Controls
Spotlight Features

The Rich Engineering Heritage Behind Dependency Injection

Andrew McVeigh takes us on a tour of the rich heritage behind dependency injection, what it represents, and tells us why its here to stay.

NetBeans 6: Matisse Updates

NetBeans 6 delivers great updates to the Matisse GUI builder. Spend a few minutes with Roman Strobl and get an expert briefing on what's new and what has changed.

Introduction to Groovy Part 3

In this, the third and final installation of Andres' Introduction to Groovy series, you learn about how Groovy handles variable numbers of arguments, named parameters, currying, and more about Groovy operators. Including, some new operators.

Easier Custom Components with Swing Fuse

Swing Fuse (actually just Fuse), is a framework designed to make it easier to create your own custom desktop components. In this article, Daniel Spiewak shows you how to get started and provides sample source code you can download.

Benchmark Analysis: Guice vs Spring

Willam Louth shows how he uses JXInsight Probes to investigate probable performance issues with code bases that he is not familiar with. He also highlights possible pitfalls in creating a benchmark, as well as in the analysis of results.
Replies: 34 - Pages: 3   [ 1 2 3 | Next ]
Threads: [ Previous | Next ]
  Click to reply to this thread Reply

Java To EXE - Why, When, When Not and How

At 10:48 AM on Jun 22, 2005, Matthew Schmidt wrote:

Longtime Javalobby memory, Dmitry Leskov, guides you through the different options available for deploying your Java application natively. Read on for his excellent comparison of the different options and related products that are out there.

Read "Java to EXE - Why, When, When Not, And How" now!
1 . At 12:06 PM on Jun 22, 2005, Michael O'Keeffe wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

Here's one additional tool that would go under the "Wrapper" category:

Java Service Wrapper
http://wrapper.tanukisoftware.org/doc/english/introduction.html
2 . At 2:09 PM on Jun 22, 2005, Deane Richan wrote:
  Click to reply to this thread Reply

How Xito can improve on Webstart and othe launching systems

Since Xito was listed as a Resource for this article I wanted to state some advantages to an Xito native deployment over WebStart for example:

Using Xito BootStrap/Launcher you can create a standalone lightweight launcher for your application that launches your app over the internet using JNLP.

This gives you the best of both worlds. Your app can be deployed on the internet allow users to always get the most recent version executed each time plus you can have your own local bootstrap/executable to launch your application.

The UI for Xito is cleaner and more flexable then WebStart and your application can be launched without any Banners or Webstart splashes etc.

Xito BootStrap come with a native EXE launcher that can be renamed to your appname making the fact that you use Xito completely transparent.

Xito can improve on other simple launching systems by allowing your application to be launched over the network. All Security and caching is handled by Xito. This is very powerful because your users will only have to download your application bootstrap but your application can live on the network so that any time you update your application your users will get the latest version similar to updating a website.

For more information checkout the Developer Guide and Whitepaper on Xito.

http://xito.sourceforge.net

--Deane Richan
3 . At 4:05 PM on Jun 22, 2005, Keith Lea wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

You say "On Windows, the application will not show up in Add/Remove Programs, so end users would have to run the Java Web Start application manager in order to remove your application"

That's wrong. All JWS applications are added to the Add/Remove Programs list as of Java 5.0. Also, you can create any number of start menu shortcuts for your program and its related files (like a help file or a helper application).
4 . At 4:38 AM on Jun 23, 2005, Dmitry Leskov wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

Thank you for the pointer. I will add it to the next version of the article, which will include a section on running java apps as Windows services.
Dmitry Leskov, Excelsior LLC
Embedded Java SE Solution for x86-based Devices
5 . At 8:36 AM on Jun 23, 2005, Michael Purdy wrote:
  Click to reply to this thread Reply

JET for Intel-based Macs?

Dmitry

Great article!

I recall that Excelsior did not have plans to offer JET for OSX due to the scope of porting for the PPC architecture. Would this (hopefully) be reconsidered for the new Macs to be based on Intel chips? Having JET for Mactel/OSX would be very cool. Perhaps it could be based off your Linux port..?

Michael
6 . At 10:14 AM on Jun 23, 2005, mark zeldis wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

Dmitry

Great article! One of the best I've ever seen on javalobby.

I just had one question/point though. To the best of my knowledge, there is still is no way to natively compile Swing based applications (without still requiring a jre on the client system). Unfortunately, I view this as the biggest problem relating to deployment since most of these issues are related to deploying gui's. Do you have any tips on this or have you seen otherwise?

Thanks.
7 . At 11:49 AM on Jun 23, 2005, Robert Sanders wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

> To sum it up, JWS can be a viable option in a controlled
> environment, such as corporate intranet, but it is not
> ready for the consumer market, where you may be better off
> using

Actually either it is, or it isn't. In my case I am working for a client that has locked down its desktops to the last version of the Microsoft Java VM. Users are not allowed to install addition software; so using non-compiled Java is right out. Now, I'm not doing anything enterprise wide, just some helper apps that are deployed on a departmental level; so any applications are either "installed" in the user's personal folders or run from CD - and having tried it, I can say that loading a "private" JRE from CD does nothing to help startup time. Anyway, just thought I'd add my 2cent as to some other times when compiling Java to an exe starts to be a good idea.
8 . At 2:39 PM on Jun 23, 2005, Michael O'Keeffe wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

Dmitry,

Actually, I'd be also interested in more detail on how GCJ differs from Excelsior. If it supports J2SE 5.0, then can Excelsior actually compile Swing apps? I see from the case study for Trita the convert to SWT.

Also, I read in an article about Red Hat porting Eclipse to 64 bit that a poster pointed out the difference in the compilers (Hotspot vs. native), such as SSA. What are the optimizations available with the AOT compiler, etc. From the Trita case study, there is mention of 3 times performance improvement.

Thanks for the excellent article,

Mike
9 . At 3:40 AM on Jun 24, 2005, Dmitry Leskov wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

> Actually, I'd be also interested in more detail on
> how GCJ differs from Excelsior. If it supports J2SE
> 5.0, then can Excelsior actually compile Swing apps?
> I see from the case study for Trita the convert to
> o SWT.

Technically, Excelsior JET 3.7 can compile any Java app that runs on J2SE 5.0, including those using the Swing API. There are two things to take into account, though:

1. We have not implemented any of J2SE 5.0 API native methods, nor AWT, JPEG and JDBC-ODBC bridge native methods for J2SE 1.3 and 1.4. The reason is that it is simply too much work. So if your application requires J2SE 5.0, or uses Swing, AWT or JPEG API, or uses an MS Access database (I trust all decent databases have JDBC drivers :) ), it will need one or more native method DLLs from the JRE. The problem is that the Sun JRE license does not permit partial redsitribution, so you have to include it with your compiled app, even though most of it will not be used.

2. If your application substatially relies on dynamic classloading, e.g. most of classes are loaded via custom classloaders, it may not be precompiled in a general case . What you can do is you can turn on Excelsior JET's JIT caching, stress test your app to have as many classes loaded as possible and recompile the cache into a single .dll/.so file. The drawback is that you still have to ship the jar files with cached classes alongside your app to facilitate consistency checks.

Problem 1 will be resolved in Excelsior JET 4.0, which I hope will be certified J2SE 5.0 compatble by Sun and so will use the licensed Java Platform API sources instead of relying on the Sun JRE.

> Also, I read in an article about > href="http://www.linuxjournal.com/article/7413">Red
> Hat porting Eclipse to 64 bit that a poster
> pointed out the difference in the compilers (Hotspot
> vs. native), such as SSA. What are the optimizations
> available with the AOT compiler, etc.

Exclsior JET also uses SSA. As for optimizations, there are many:

Classic

inline substitution of methods
common subexpressions elimination
dead code removal
operation strength reduction
constant propagation
method specialization
reference aliases computation
loop unrolling
loop specialization
recursion elimination
and others...

Object-oriented

Cast removal
Virtual call replacement

Java-specific

Stack allocation of objects
Interface method invocation
Exception checks removal

I have just realized the presentation from which I copypasted the above lists dates back to 2001, and we have since implemented some more optimizations - need to update the presentation!

If you have ACM Digital Library login, you may wish to read this article:

V Mikheev et al.
Overview of Excelsior JET, a high performance alternative to Java virtual machines
in Proc. of the third international workshop on Software and performance, WOSP'02, ACM Press, 2002

There is also a free add-on called JetPerfect that can do global optimization, but only if all classes are known at compile time and custom classloaders are not used. It was used to optimize Trita:

> From the Trita case study, there is mention of 3 times performance improvement.

2 times as far as I can recall. Also, it does not apply to all apps - some of our customers do not get any performance improvement, but use JET solely for prevent easy decompilation of their classes.

> Thanks for the excellent article,

You are welcome! We have one more in the works, so stay tuned.
Dmitry Leskov, Excelsior LLC
Embedded Java SE Solution for x86-based Devices
10 . At 5:43 AM on Jun 24, 2005, Dmitry Leskov wrote:
  Click to reply to this thread Reply

Re: JET for Intel-based Macs?

> Great article!

Thank you very much!

> I recall that Excelsior did not have plans to offer JET for OSX due to the scope of porting for the PPC
> architecture. Would this (hopefully) be reconsidered for the new Macs to be based on Intel chips? Having
> JET for Mactel/OSX would be very cool. Perhaps it could be based off your Linux port..?

Well, we indeed have plans to add more targets and x64 (Windows/Linux) is at the top of the list at the moment, but our customers shall have the last word on that.

As for porting Excelsior JET to Mac OS X, there are two major tasks actually - implementing support for PowerPC, and interoperating with the Apple port of the Java API. The first one is purely technical but it is now gone anyway. The second requires cooperation with Apple, and I am not sure what will be Apple's position if we ask them whether they are interested.

In any case, we need to certify our product for compatibility first. That would in particular reduce the porting efforts dramatically.
Dmitry Leskov, Excelsior LLC
Embedded Java SE Solution for x86-based Devices
11 . At 5:49 AM on Jun 24, 2005, Dmitry Leskov wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

> Great article! One of the best I've ever seen on javalobby.

Thanks a lot!

> I just had one question/point though. To the best of my knowledge, there is still is no way to natively
> compile Swing based applications (without still requiring a jre on the client system).
> Unfortunately, I view this as the biggest problem relating to deployment since most of these issues
> are related to deploying gui's. Do you have any tips on this or have you seen otherwise?

I have answered this in post #9 above. In short, we expect that the next major version of Excelsior JET will be certified Java Compatible and will include the Sun's Java API implementation under a Commercial Use License, in the form of native DLLs.
Dmitry Leskov, Excelsior LLC
Embedded Java SE Solution for x86-based Devices
12 . At 5:59 AM on Jun 24, 2005, Dmitry Leskov wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

> You say "On Windows, the application will not show up in Add/Remove Programs, so end users would have to
> run the Java Web Start application manager in order to remove your application"
>
> That's wrong. All JWS applications are added to the Add/Remove Programs list as of Java 5.0. Also, you
> can create any number of start menu shortcuts for your program and its related files (like a help file
> or a helper application).

You are absolutely correct. Something must have gone wrong when I tested it. Perhaps I had 1.4.2 installed after 5.0 on my previous system so I was actually using an older version of JWS.

Thank you very much for correcting me! I will change this paragraph in the next version of the article to read "Before J2SE 5.0..."
Dmitry Leskov, Excelsior LLC
Embedded Java SE Solution for x86-based Devices
13 . At 9:10 AM on Jul 1, 2005, SyntEvo GmbH wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

You are right, they show up in the Add/Remove Programs. Unfortunately I can't get rid of them. Uninstalling them on my XP Pro system does not remove them... :(

Tom
SmartCVS | SmartSVN | SmartSynchronize - smart tools for smart developers
14 . At 7:45 AM on Jul 11, 2005, Guru Dutta wrote:
  Click to reply to this thread Reply

Re: Java To EXE - Why, When, When Not and How

Hi Dmitry,

A very good article,let me put it as a relevant article which seems to address what the title of the message states(The others i found just digressed from the main stream :)).I do want to port my application which run on JAVA to native using GNU's GCJ but the only hinderance is that we need to support a large number of platforms like HPUX,SOLARIS WINDOWS AND LINUX.(different versions ofcourse).I did see the supported platforms for the GCJ complier and just wanted to know if you knew any other tool which could do the same for the platforms mentioned above.Frankly,I would like to use the GCJ complier(may be biased wrt to GNU)provided there is some way for it to support other platforms like HPUX etc...Also wanted to know if the size of the library that we need to include during this process is too huge??
Also please do let me know some points that need to be kept in mind before we get into this activity.

TIA,
Guru Dutta

thread.rss_message