Skip to content

Releases: google/j2objc

2.0.5

24 Oct 05:20
Compare
Choose a tag to compare

A new release of J2ObjC is available, 2.0.5. This is an update to 2.0.4.1 with several bug fixes and the following changes:

Swift Support:

  • Fixed generation of JRE.framework/JRE.h to only include public header files.
  • Updated function prototypes to avoid strict-prototype warnings from Xcode 9.
  • Annotates copyWithZone: argument as nullable.

Thanks for all the bug reports, especially those with tests and/or patches -- we're a small team, and appreciate the help!

2.0.4.1

03 Oct 18:22
Compare
Choose a tag to compare

A new release of J2ObjC is available, 2.0.4.1. The source for this release is unchanged from 2.0.4, but it was rebuilt with the correct protocol buffer library (3.3.0).

2.0.4

28 Sep 19:12
Compare
Choose a tag to compare

A new release of J2ObjC is available, 2.0.4. This is an update to 2.0.3 with several bug fixes and the following changes:

J2ObjC translator:

  • Eclipse JDT dependencies are removed.
  • Android Library (*.aar) files are now supported in classpath arguments.
  • Runs when Java 9 JDK is system default.
    • NOTE: Java 8 still needs to be installed (both co-exist)

JRE emulation:

  • nil_chk() has been changed to a macro, to provide better stack traces.

JRE sources updated to latest from Android-nougat:

  • java.net
  • XML SAX support: org.xml.sax, XML drivers

Thanks for all the bug reports, especially those with tests and/or patches -- we're a small team, and appreciate the help!

2.0.3

28 Aug 21:08
Compare
Choose a tag to compare

A new release of J2ObjC is available, 2.0.3.

Note: -Xuse-jdt is removed in this release and the JDT code will be removed at a later time.

Other changes include:

J2ObjC examples:

  • Adds an example app using Bazel build rules (in /examples/Contacts).

JRE sources updated to latest from Android-nougat:

  • java.nio
  • java.nio.channels
  • java.nio.spi

Bug fixes:

Thanks for all the bug reports, especially those with tests and/or patches -- we're a small team, and appreciate the help!

2.0.2

19 Jul 19:57
Compare
Choose a tag to compare

A new release of J2ObjC is available, 2.0.2. This is an update to 2.0.1 with some bug fixes and updates to the JRE runtime.

J2ObjC translator:

  • Passing command arguments with a file using '@' now works for all flags. (previously only worked for source files)
  • Added --no-wrapper-methods flag. Helps to reduce code size by eliminating Objective-C wrappers for static methods and constructors. These can be called via generated C-style functions.

JRE emulation:

  • java.lang.Throwable no longer maps to NSException. Instead JavaLangThrowable extends from NSException.

JRE sources updated to latest from Android-nougat:

  • java.util (most)
  • java.util.concurrent
  • java.util.concurrent.locks
  • javax.net.ssl

Thanks for all the bug reports, especially those with tests and/or patches -- we're a small team, and appreciate the help!

2.0.1

07 Jun 15:50
Compare
Choose a tag to compare

A new release of J2ObjC is available, 2.0.1. This is an update to 2.0 with some bug fixes and updates to the JRE runtime.

JRE sources updated to latest from Android-nougat:

  • java.lang.reflect
  • java.lang.ref
  • java.util.concurrent.atomic
  • java.util.jar
  • java.util.logging
  • java.util.regex

Bug fixes:

Protocol Buffers:

  • Updated to build against protobur-3.3.0.
  • Added map field support.

Thanks for all the bug reports, especially those with tests and/or patches -- we're a small team, and appreciate the help!

2.0

09 May 18:55
Compare
Choose a tag to compare
2.0

A new release of J2ObjC is available, 2.0. This release uses the javac compiler as its front end, which improves the translator's Java compatibility while improving performance. If the new front end causes any problems with your project, please file a bug and then switch to the old front end using the -Xuse-jdt flag (please do so promptly, as that flag will be removed in a future release once issues requiring have been fixed).

The http://j2objc.org website has joined the Google Developers site at https://developers.google.com/j2objc/. This gives our project better support and will make it easier to keep up to date. In particular, our API Reference is enhanced and easier to use. We'll be redirecting http://j2objc.org to this new site soon.

This release continues the migration to the OpenJDK-based JRE source code in Android's 7.0 Nougat libcore library. Although there are some classes that still need to be migrated, we believe that all classes with Java 8 additions are now ported (please file a bug if you find otherwise).

Other changes include:

  • Updated java.security classes using the Apache Harmony Fortress classes to instead use sun.security packages.
  • Updated date and number formatters to OpenJDK.
  • Updated date, calendar, and timezone support to OpenJDK.
  • Updated character conversion to use the iconv library in iOS.
  • Added protocol buffers oneof support.
  • Integrated several IosHttpURLConnection contributions and bug fixes.
  • j2objc performance improvements:
    • reduced size of several AST node classes,
    • skipped unnecessary validation.

Thanks for all the bug reports, especially those with tests and/or patches -- we're a small team, and appreciate the help!

1.3.1

24 Jan 20:27
Compare
Choose a tag to compare

This release updates 1.3 with two fixes:

  • Issue #828 fix for missing casts for some parameterized type variables, and
  • The j2objc-annotations.jar Maven version number was updated to 1.3.

1.3

18 Jan 23:14
Compare
Choose a tag to compare
1.3

A new release of J2ObjC is available, 1.3. The main focus of this release has been on improving support for Java 8, which included fixing bugs and memory cycles in the new OpenJDK code in the jre_emul library. Although Java 8 support was only introduced in 1.2, we have much higher confidence in J2ObjC's Java 8 support with this release.

The Java 8 API support still isn’t complete; in particular, java.util.time is not available. However, since it’s also not part of Android’s libcore library (which the jre_emul library is based upon), code that uses that new package isn’t portable yet. If you find any other Java 8 classes or methods aren’t available, file a bug so we can make implementing it a priority.

Most of our time was spent making it possible to use javac as the front-end for j2objc. We realized we needed to switch to javac for several reasons, including better Java 8 support now and faster support for future Java enhancements ("Winter (Java 9) is coming" :-). The j2objc translator still uses the Eclipse JDT as the default front-end, but plan on switching the default to javac in the next release, and dropping the JDT in a following release.

We encourage you to test the javac front-end with your project, and report any issues you find using it. There are two ways to specify which front end to use:

  • Use the -Xuse-javac flag (there's also a -Xuse-jdt flag, which is the default); or
  • Define the environment variable J2OBJC_FRONT_END=JAVAC (or JDT) in your build tool or shell settings.

Thanks for all the bug reports, especially those with tests and/or patches -- we're a small team, and appreciate the help!

1.2

13 Oct 19:23
Compare
Choose a tag to compare
1.2

A new release of J2ObjC is available, 1.2. The main focus of this release has been on adding the new packages, classes, and methods in Java 8 to the JRE emulation library. These new features include:

  • java.util.function package
  • java.util.stream package
  • Streaming support in java.io, java.lang and java.util
  • java.util.Spliterator with collection support
  • java.util.Base64
  • java.util.Optional*
  • java.util.StringJoiner and String.join()
  • java.util.Arrays.parallelSort()

Many of these new features use lambdas in lots of interesting ways, so lambda and method reference translation was reworked, with faster execution and several bugs fixed.

The Java 8 API support isn’t complete; in particular, java.util.time is not available. However, since it’s also not part of Android’s libcore library (which the jre_emul library is based upon), code that uses that new package isn’t portable yet. If you find any other Java 8 classes or methods aren’t available, file a bug so we can make implementing it a priority.

Thanks for all the bug reports, especially those with tests and/or patches -- we're a small team, and appreciate the help!