# Using the Socket API with Some Common Third-Party Libraries **Java 7 runtime support on App Engine standard was [deprecated](https://cloud.google.com/appengine/docs/deprecations/java7) on December 13, 2017 and will be shut down entirely on January 16, 2019. It is replaced by the [Java 8 Runtime Environment](https://cloud.google.com/appengine/docs/standard/java/runtime-java8).** Samples for the Java 8 runtime can be found [here](/appengine-java8). ## Using the Socket API with JavaPNS **Note:** JavaPNS is an open source library for Apple Push Notifications. With socket support for App Engine, many applications can now use JavaPNS on App Engine directly. App Engine does not officially support JavaPNS, although it may work with these caveats: - **JavaPNS** uses Security.getProperty, which was not permitted in versions of App Engine earlier than 1.7.3. However, if you need this to work in 1.7.2, you may change the `javapns` source to not use `Security.getProperty`, and simply set **ALGORITHM** to ``sunx509`. (Future versions are expected to fix this by replacing the use of `Security.getProperty` with `KeyManagerFactory.getDefaultAlgorithm()`, which will work correctly with older versions of App Engine. - App Engine does not support signed JAR files; accordingly the "Bouncy Castle" jar provided with the javapns distribution fails to load. To fix this, remove the META-INF/MANIFEST.MF file from ``bcprov-jdk15-146.jar`` using the following command line: zip -d bcprov-jdk15-146.jar META-INF/MANIFEST.MF ## Using JavaMail with the Socket API App Engine does not officially support JavaMail, although it may work with these caveats: JavaMail 1.4.5 is compatible with App Engine but requires a work-around to resolve the issue of class loader ordering. Currently, there are JavaMail classes in the `appengine-api.jar`, which is scanned before all other JAR files. This causes the wrong `javax.mail` classes to be loaded. The work-around is to unzip the JavaMail 1.4.5 `mailapi.jar` file (excluding the `META-INF/MANIFEST.MF` file) into the `WEB-INF/classes` directory. This causes the correct classes to be loaded before those in `appengine-api.jar`.