You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by David Bosschaert <da...@gmail.com> on 2012/11/01 09:53:27 UTC

Re: Fwd: [osgi-blog] [OSGi Alliance Blog] 4.3 Companion Code for Java 7

Hi,

I have prepared these artifacts for upload to Maven Central earlier
this week, but am looking for someone to validate them before I
release them.
See here: http://www.mail-archive.com/dev@felix.apache.org/msg27287.html
and here: http://www.osgi.org/bugzilla/show_bug.cgi?id=153

If someone has a moment to sanity check, please do so and let me know.

Best regards,

David

On 29 October 2012 08:03, Jean-Baptiste Onofré <jb...@nanthrax.net> wrote:
> FYI,
>
> the 4.3.1 artifacts have not yet been deployed on Central.
>
> Regards
> JB
>
>
> On 10/29/2012 09:00 AM, Felix Meschberger wrote:
>>
>> FYI in case you missed it.
>>
>> In short: The OSGi R 4.3 libraries have been recompiled with Java 5 target
>> and republished as version 4.3.1 to maven. So to use OSGi R 4.3 libraries in
>> a Java 5 (and up) environment you should use the 4.3.1 version dependency.
>>
>> Nothing to be done when using older (4.2.0 and before) dependencies
>> because they are compiled for Java 1.4.
>>
>> Regards
>> Felix
>>
>> Anfang der weitergeleiteten E-Mail:
>>
>> Von: BJ Hargrave <bj...@bjhargrave.com>>
>> Betreff: [osgi-blog] [OSGi Alliance Blog] 4.3 Companion Code for Java 7
>> Datum: 26. Oktober 2012 21:06:11 MESZ
>> An: "osgi-blog@mail.osgi.org<ma...@mail.osgi.org>"
>> <os...@mail.osgi.org>>
>> Antwort an: Private list for OSGi blog discussion
>> <os...@mail.osgi.org>>
>>
>> Starting in version 4.3, OSGi started to use generics in some of the API
>> including the Core specification. Generics were
>> introduced<https://en.wikipedia.org/wiki/Generics_in_Java> to the Java
>> language in Java 5. However, OSGi needed to continue to support embedded use
>> cases which use the CDC/Foundation 1.1 runtime which is still based upon the
>> Java 1.4 language level and JVM. To address this issue, OSGi compiled the
>> APIs with -target
>> jsr14<http://www.ibm.com/developerworks/java/library/j-jtp02277/index.html>;
>> an undocumented javac flag introduced before Java 5 was final. So we had the
>> best of both worlds: we can use generics and still compile to run on Java
>> 1.4 based runtimes.
>>
>> This worked for Java 5 and Java 6. But when Java 7 shipped, two things
>> changed: javac no longer understood the jsr14 option to -target and javac
>> refused to recognize the attributes containing the generics information in
>> class files already compiled with -target jsr14. The change to no longer
>> support creating -target jsr14 class files was ok; we could continue to
>> compile with Java 6 javac. But the change to the javac to cease to recognize
>> the class file attributes with the generics information in existing class
>> files was a bigger problem. It meant that the 4.3 API jars published by OSGi
>> were not useable by people who need to compile with Java 7 javac. By not
>> useable, I mean javac treated the classes as if they did not contain any
>> generics information: they were raw. A
>> bug<http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7078419> was filed
>> against Java to see if this was some mistake or oversight. The reply was
>> that the change was intentional.
>>
>> At the time this was first
>> noticed<https://mail.osgi.org/pipermail/osgi-dev/2011-August/003223.html>,
>> Java 7 was new and not too widely used. OSGi also included the source code
>> in the jars so you could recompile the code yourself if you needed. Later,
>> when it came time to ship Core R5, we changed to compile the API classes
>> with -target 1.5 and so they work fine on Java 7. So problem solved; the new
>> release's jars don't use -target jsr14! Except some of the current OSGi
>> implementations (I'm looking at you Felix<https://felix.apache.org/> and
>> Karaf<https://karaf.apache.org/>) are still based upon Core 4.3 and thus
>> people using those implementations still need to use the Core 4.3 API. And
>> if they also want to use Java 7, they need to recompile the OSGi API source.
>> So after some prodding by a few folks, OSGi rebuilt the Core and Compendium
>> API jars as Core
>> 4.3.1<http://www.osgi.org/Download/File?url=/download/r4v43/osgi.core-4.3.1.jar>
>> and Compendium 4.3.1<http://www.osgi.org/Download/F
>
> ile?url=/download/r4v43/osgi.cmpn-4.3.1.jar>. The new jars have the same
> packages at the same package versions having the same API signatures. They
> are just not compiled with -target jsr14 so they work fine with Java 7.
>>
>>
>> So if you need to use the 4.3 API with Java 7, pick up these new 4.3.1
>> jars. They should also be available on
>> maven<http://mvnrepository.com/artifact/org.osgi> shortly.
>>
>> --
>> Posted By BJ Hargrave to OSGi Alliance
>> Blog<http://blog.osgi.org/2012/10/43-companion-code-for-java-7.html> at
>> 10/26/2012 07:06:00 PM _______________________________________________
>> osgi-blog mailing list
>> osgi-blog@mail.osgi.org<ma...@mail.osgi.org>
>> https://mail.osgi.org/mailman/listinfo/osgi-blog
>>
>>
>
> --
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com