Releases: google/j2objc
2.0.5
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
2.0.4
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
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
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
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:
- Issues: #858, #861, #802, #844, #856, #855
- Fixed leaks in java.io.Reader, java.io.Writer, java.io.InputStreamReader
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
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
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
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
packagejava.util.stream
package- Streaming support in
java.io
,java.lang
andjava.util
java.util.Spliterator
with collection supportjava.util.Base64
java.util.Optional*
java.util.StringJoiner
andString.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!