Opinion wanted -- Java
Jonathan S. Shapiro (shap@eros-os.org)
Sun, 2 Apr 2000 13:47:34 -0400
One of the top things on my to-do list is a configuration management system
that actually works (as distinct from CVS). The design of this has now
pretty well emerged, and it shouldn't take long to get a first version
running.
I am debating doing the implementation in Java for reasons of portability
and garbage collection, and since all of you have more experience with Java
runtimes than I do, I would appreciate your thoughts. Here are my concerns
about using Java for this application. Perhaps you will be able to shed
light on how realistic these concerns are.
- Portability
Until the release of the IBM JDK, there has not been a sufficiently reliable
JDK for linux/x86 (or any other open source OS). The kaffe effort doesn't
appear to have a consistent, easily installed set of libraries. I am
therefore concerned that if I do this in Java I will wind up in difficulty
when the time comes to run it on top of EROS. Realistically, is there a
fully open-source Java implementation (including libraries) that can be
relied on at this point?
In particular, can Swing be redistributed (in bytecode form) on a non-Sun
JDK, and is the JDK support out there on the open-source Java
implementations good enough to support it?
2. Startup Time
Since the first iteration (and probably the most commonly used version for
the forseeable future) of this program will be a command-line tool, I am
concerned about the startup-time cost of JIT compilation. My experience is
that it is quite slow, and in the "start run exit" model of program you pay
this cost again and again.
Does anyone have an opinion on whether it is "fast enough"?
Since this application doesn't require (indeed, does not *want*) dynamic
class loading, does anyone have experience to share with the bytecode->C
compilers?
3. Heap image size
The required heap size for this application is a function of the size of the
code base. It is likely that for any given max heap size some code base will
overflow the heap. Why the hell did the bozos at Sun set a max heap size,
and how does one get the runtime to simply grow the heap in reasonable
increments?
In the short term, I may decide to go with C for portability reasons. I'm
hoping someone can tell me a story to the effect that I do not need to.
Partly, I just hate to ask people to download 8 megabytes of Java runtime
just to run this application.
Eventually, there will want to be GUI versions of this tool, and the
portability of Java is very attractive. I just want to understand how it's
going to bite me down the road before placing my own bets...
Thanks alot.
Jonathan