Discussion:
[gui-dev] Sun Java 1.5 Update 1, no more a beta!
Philippe Verdy
2005-02-12 20:43:45 UTC
Permalink
Just for info:

The Java version 1.5 Update 1 has been released on Windows (32 bit
version, with online or offline installation), Linux (32-bit x86, and
AMD64), Solaris (SPARC 32-bit and 64-bit, x86 32-bit). This includes
the JRE and the JDK.

Time to get the final update... And possibly to update the links on the
Limewire website (or the Limewire installation app that downloads and
installs Java).

This is no longer a beta.

The Sun website has a fresh new home page exhibiting the new
possibilities, and now comes with more translations...

Also the JDK






Découvrez le nouveau Yahoo! Mail : 250 Mo d'espace de stockage pour vos mails !
Créez votre Yahoo! Mail sur http://fr.mail.yahoo.com/
Amit Likhyani
2005-02-12 20:46:08 UTC
Permalink
Is there a good summary somewhere for what has been added to 1.5 from
1.4? I have not been keeping up and would really appreciate the
synopsis.

Amit
Post by Philippe Verdy
The Java version 1.5 Update 1 has been released on Windows (32 bit
version, with online or offline installation), Linux (32-bit x86, and
AMD64), Solaris (SPARC 32-bit and 64-bit, x86 32-bit). This includes
the JRE and the JDK.
Time to get the final update... And possibly to update the links on the
Limewire website (or the Limewire installation app that downloads and
installs Java).
This is no longer a beta.
The Sun website has a fresh new home page exhibiting the new
possibilities, and now comes with more translations...
Also the JDK
Découvrez le nouveau Yahoo! Mail : 250 Mo d'espace de stockage pour vos mails !
Créez votre Yahoo! Mail sur http://fr.mail.yahoo.com/
_______________________________________________
gui-dev mailing list
http://www.limewire.org/mailman/listinfo/gui-dev
Sam Berlin
2005-02-12 22:47:55 UTC
Permalink
Sun has a good summary at
http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html .

LimeWire 4.4's installer does now upgrade Java to 1.5.0_01 if it detects the
computer only has Java 1.4.0 or below.

There aren't too many things in 1.5 that are very relevant to LimeWire.
Most notably is that Swing is much faster and looks much better, especially
with the Windows L&F. Java 1.5 also introduced a new compression tool
"pack200" that we now use to compress LimeWire's jars for the Windows
installer, which reduces installation by approximately 1.5MB. (We also used
some other tricks to further reduce the installer size.)

The most prominent features of 1.5 are changes in the language spec, such as
the addition of templates, autoboxing of native types, enums, etc... we
can't make use of those until a version of 1.5 is available on all OS's, so
that everyone can continue to compile LimeWire.

Thanks,
Sam
-----Original Message-----
Sent: Saturday, February 12, 2005 3:46 PM
Subject: Re: [gui-dev] Sun Java 1.5 Update 1, no more a beta!
Is there a good summary somewhere for what has been added to 1.5 from
1.4? I have not been keeping up and would really appreciate the
synopsis.
Amit
Post by Philippe Verdy
The Java version 1.5 Update 1 has been released on Windows (32 bit
version, with online or offline installation), Linux (32-bit x86, and
AMD64), Solaris (SPARC 32-bit and 64-bit, x86 32-bit). This includes
the JRE and the JDK.
Time to get the final update... And possibly to update the links on the
Limewire website (or the Limewire installation app that downloads and
installs Java).
This is no longer a beta.
The Sun website has a fresh new home page exhibiting the new
possibilities, and now comes with more translations...
Also the JDK
Découvrez le nouveau Yahoo! Mail : 250 Mo d'espace de stockage pour vos mails !
Créez votre Yahoo! Mail sur http://fr.mail.yahoo.com/
_______________________________________________
gui-dev mailing list
http://www.limewire.org/mailman/listinfo/gui-dev
_______________________________________________
gui-dev mailing list
http://www.limewire.org/mailman/listinfo/gui-dev
Philippe Verdy
2005-02-12 23:23:00 UTC
Permalink
Post by Sam Berlin
The most prominent features of 1.5 are changes in the language spec,
such as the addition of templates, autoboxing of native types, enums,
etc...
we can't make use of those until a version of 1.5 is available on all
OS's, so that everyone can continue to compile LimeWire.
What is unfortunate is that most of the additions in the Java 1.5
language could have been retrofitted to work with the Java 1.4 VM.
Effectively there's no new JVM instructions, and generics
(pseudo-templates) could have been beneficial to the development as a
help against common programming errors, or kludgy programming technics
like typecasts, that we suffer in Java 1.4.

The Java 1.5 compiler should have had flags so that is would compile
all Java 1.5 source language features targetting the Java 1.4 JVM. But
if we target Java 1.4 VM, we also loose the new language features.

Targetting Java 1.5 should have just meant that annotations would have
been included in the compiled classes, and that template types would
have had their own new type signature.

Apparently, Sun has decided to deprecate later the previous class
format in favor of a new updated one that won't load on previous
versions of Java, based on the assumptions that almost all VM
implementations will be updated to support the new class format. This
will be true for Windows, Linux, and soon for MacOSX, but there will be
some time before J2EE servers get the update.

This means that many common libraries and tools will continue to be
developed so that they can continue to run on J2EE environments (such
as WSAD, Struts, Oracle AS...) that are not as easy to update as
standalone J2SE (and J2ME) environments.

May be someone will develop a compiler that will accept the new Java
1.5 syntax targetting Java 1.3 and 1.4 VMs. May be these alternate
compilers already exist. But the standard Sun JDK still does not
support this option.

It would have been good to have generics, enums, and autoboxing for
developing Limewire... Will that be in the new update of Eclipse (which
has its own excellent Java compiler that really outperforms the Sun JDK
compiler)?

I note that during the development and discussions of new Java 1.5
language features, in the JCP process, experimentation of these
features was possible using the Java 1.4 and Java 1.3 VMs... (only
annotations were not supported within class files, but emulation was
possible by storing them externally in additional meta-data files, and
by emulating the new Reflection features with a custom class loader
that loads these meta-data files. Of course, embedded annotations
within the same class file is faster, and improves applications that
use Reflection to load classes dynamically based on annotation
meta-data).

I hope that Sun will be able to develop new language features highly
demanded now like multiple return values, or enhanced auto-boxing, but
I'm not sure that the new Java 1.5 class format (and the JVM 1.5 class
loader and verifier) will be compatible with those additions. So most
of these additions will need to wait for a long time the design of Java
6 (not expected to come before 4 or 5 years if the class file format
needs to be changed again...).

I don't understand why Sun took this slow path, when the .Net is
pressing all UML developers to abandon Java (there are already things
in UML that can't be emulated correctly and completely in Java/JVM, a
problem that C#/.Net and C-C++/native-assembly do not have): where are
for example events, event notifiers, event handlers, properties,
getters/setters? The way they are emulated in Java is not completely
satisfying and not completely errorprone or typesafe (type-safety and
more generally the need for developers to create programs that will not
experiment bugs only found at run-time, is now a very serious concern,
for security)

What is saving Java for now, is its performances and (temporarily) a
better secured sandbox, and the huge existing developements that have
been done in application servers. But as .Net comes now to Unix and
Linux, this is a serious concern, notably because Microsoft has not
renounced to make a compliant JVM that could run within .Net to press
developers to come to .Net with ease (Microsoft does not need to
support the Java language itself with a compiler, but it can still
demonstrate that its .Net platform can be used to run Java
applications)

It's also notable that .Net supports a virtual machine that can
completely emulate what a classical native processor architecture
supports, and this effectively allows using other languages than C#
(Microsoft promotes VisualBasic, but there also exists now Perl,
Python, Pascal, soon Delphi too, Ada, and I think that .Net will be
able to support C and C++ with the ANSI standard, or even Cobol and
Fortran, making .Net a future platform of choice to port many legacy
applications to application servers and n-tiers environments...)







Découvrez le nouveau Yahoo! Mail : 250 Mo d'espace de stockage pour vos mails !
Créez votre Yahoo! Mail sur http://fr.mail.yahoo.com/
zbalevsky
2005-02-13 04:57:23 UTC
Permalink
Post by Philippe Verdy
Post by Sam Berlin
The most prominent features of 1.5 are changes in the language spec,
such as the addition of templates, autoboxing of native types, enums,
etc...
we can't make use of those until a version of 1.5 is available on all
OS's, so that everyone can continue to compile LimeWire.
What is unfortunate is that most of the additions in the Java 1.5
language could have been retrofitted to work with the Java 1.4 VM.
Wasn't that done because of the jvm class-sharing? Afaik only 1.5
bytecode can be shared between jvms.

If 1.5-compiled desktop applications become widespread, we could provide
a version of limewire with 1.5 bytecode. Some things like the xerces
libraries are probably shared by 90% of java apps out there :) Then
again, there are probably many small desktop software vendors thinking
"if Limewire starts offering 1.5 version, we'll start offering one too"
so its a chicken-and-egg situation :-/
Philippe Verdy
2005-02-13 15:40:37 UTC
Permalink
Post by Sam Berlin
Post by Philippe Verdy
Post by Sam Berlin
The most prominent features of 1.5 are changes in the language
spec,
Post by Philippe Verdy
Post by Sam Berlin
such as the addition of templates, autoboxing of native types,
enums,
Post by Philippe Verdy
Post by Sam Berlin
etc...
we can't make use of those until a version of 1.5 is available on
all
Post by Philippe Verdy
Post by Sam Berlin
OS's, so that everyone can continue to compile LimeWire.
What is unfortunate is that most of the additions in the Java 1.5
language could have been retrofitted to work with the Java 1.4 VM.
Wasn't that done because of the jvm class-sharing? Afaik only 1.5
bytecode can be shared between jvms.
If 1.5-compiled desktop applications become widespread, we could provide
a version of limewire with 1.5 bytecode. Some things like the xerces
libraries are probably shared by 90% of java apps out there :) Then
again, there are probably many small desktop software vendors
thinking
"if Limewire starts offering 1.5 version, we'll start offering one too"
so its a chicken-and-egg situation :-/
Why not? It's your decision at Limewire to know if a version compiled
for Java 1.5 should be released. But this will require users to select
the target Java VM, something they probably don't know exactly when
they just have installed Java using the automatic installer on the Sun
website...

For now the good point is that the LimeWire installer has been reduced
in size, and I don't expect that the downloaded installer will contain
both versions of Limewire, and of its libraries like Xerces...

In my opinion, code sharing did not require a new class format. The new
format was needed because class files now contain more type identifiers
(for generics in class member signatures) and compiled annotations:
this would have shocked the Java 1.4 classloader in its verifier. So
classes need to be marked specially, so that new class vtables can
contain more fields.

This is not caused by new language features: Java 1.5 just defines a
more strict verifier, and changes the way Reflection will work (there
are also additional methods and private fields in the Class class, and
generics or autoboxing also change the rules for matching classes and
for implementing typesafe typecasts at run-time).

But this could have been retrofitted in Java 1.4 without the additional
strict rules (for example "List" is now a template, and an alias for
"List<? extends Object>" but also for "List<int>" autoboxed as
"List<Integer>". So the compiler could have been strict exactly like in
Java 1.5, without being so strict at run-time for introspection and
typecasts).

This approach is also used in other existing extensions of the Java
language, by alternate compilers still targetting the 1.4 JVM.

For example, there does exist some alternate experimental Java
compilers that support "const" references in method parameters... they
work by compiling not only 1.4-compatible classes but also by building
an additional dictionnary of class meta-data, in a special build
directory, this really helps developing with stricter UML rules, and
helps the developer finding bugs in the source that would be difficult
to track without this language extension; however const-strictness is
not enforced in the generated application and in Reflection at
run-time, unless the runt-time code uses a custom extension of
Reflection and of the class-loader at run-time, to take extended
meta-data into account).






Découvrez le nouveau Yahoo! Mail : 250 Mo d'espace de stockage pour vos mails !
Créez votre Yahoo! Mail sur http://fr.mail.yahoo.com/

Continue reading on narkive:
Loading...