Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Determine if a Java class is a portable SE class

Tags:

java

I'm working on a Java code analyzer (AST stuff using the Trees API) and I'm trying to create a report on whether or not the code being inspected makes use of non-portable APIs. Stuff like the sun packages and such should cause a warning. Where is the defined list of SE 7 portable classes? Is there anything more machine parsable than the SE Javadocs? If the Javadocs are "the" portable listing how are they generated from all the java source from OpenJDK? Is portable code kept separate or ...?

like image 864
Chase Avatar asked Nov 12 '22 00:11

Chase


1 Answers

The core SE classes are defined by one of the files used in the JDK build process which can be found at: https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/make/docs/CORE_PKGS.gmk

# CORE_PKGS is the list of packages that form the
# Java API Specification.
#
### ***IMPORTANT NOTE***
### There is also a "REGEXP" variable in the docs/makefile that
### determines which table the packages go in on the main page.
### Currently, there is only table ("Platform Packages") and
### everything goes in it, so REGEXP is "*". But if that policy
### changes, packages added will need to be reflected in  that
### list of wildcard expressions, as well.
###
CORE_PKGS =                                      \
  java.applet                                    \
  java.awt                                       \
  java.awt.color                                 \
  java.awt.datatransfer                          \
  java.awt.dnd                                   \
  java.awt.event                                 \
  java.awt.font                                  \
  java.awt.geom                                  \
  java.awt.im                                    \
  java.awt.im.spi                                \
  java.awt.image                                 \
  java.awt.image.renderable                      \
  java.awt.print                                 \
  java.beans                                     \
  java.beans.beancontext                         \
  java.io                                        \
  java.lang                                      \
  java.lang.annotation                           \
  java.lang.instrument                           \
  java.lang.invoke                               \
  java.lang.management                           \
  java.lang.ref                                  \
  java.lang.reflect                              \
  java.math                                      \
  java.net                                       \
  java.nio                                       \
  java.nio.channels                              \
  java.nio.channels.spi                          \
  java.nio.charset                               \
  java.nio.charset.spi                           \
  java.nio.file                  \
  java.nio.file.attribute            \
  java.nio.file.spi              \
  java.rmi                                       \
  java.rmi.activation                            \
  java.rmi.dgc                                   \
  java.rmi.registry                              \
  java.rmi.server                                \
  java.security                                  \
  java.security.acl                              \
  java.security.cert                             \
  java.security.interfaces                       \
  java.security.spec                             \
  java.sql                                       \
  java.text                                      \
  java.text.spi                                  \
  java.util                                      \
  java.util.concurrent                           \
  java.util.concurrent.atomic                    \
  java.util.concurrent.locks                     \
  java.util.jar                                  \
  java.util.logging                              \
  java.util.prefs                                \
  java.util.regex                                \
  java.util.spi                                  \
  java.util.zip                                  \
  javax.accessibility                            \
  javax.activation                               \
  javax.activity                                 \
  javax.annotation                               \
  javax.annotation.processing                    \
  javax.crypto                                   \
  javax.crypto.interfaces                        \
  javax.crypto.spec                              \
  javax.imageio                                  \
  javax.imageio.event                            \
  javax.imageio.metadata                         \
  javax.imageio.plugins.jpeg                     \
  javax.imageio.plugins.bmp                      \
  javax.imageio.spi                              \
  javax.imageio.stream                           \
  javax.jws                                      \
  javax.jws.soap                                 \
  javax.lang.model                               \
  javax.lang.model.element                       \
  javax.lang.model.type                          \
  javax.lang.model.util                          \
  javax.management                               \
  javax.management.loading                       \
  javax.management.monitor                       \
  javax.management.relation                      \
  javax.management.openmbean                     \
  javax.management.timer                         \
  javax.management.modelmbean                    \
  javax.management.remote                        \
  javax.management.remote.rmi                    \
  javax.naming                                   \
  javax.naming.directory                         \
  javax.naming.event                             \
  javax.naming.ldap                              \
  javax.naming.spi                               \
  javax.net                                      \
  javax.net.ssl                                  \
  javax.print                                    \
  javax.print.attribute                          \
  javax.print.attribute.standard                 \
  javax.print.event                              \
  javax.rmi                                      \
  javax.rmi.CORBA                                \
  javax.rmi.ssl                                  \
  javax.script                                   \
  javax.security.auth                            \
  javax.security.auth.callback                   \
  javax.security.auth.kerberos                   \
  javax.security.auth.login                      \
  javax.security.auth.spi                        \
  javax.security.auth.x500                       \
  javax.security.cert                            \
  javax.security.sasl                            \
  javax.sound.sampled                            \
  javax.sound.sampled.spi                        \
  javax.sound.midi                               \
  javax.sound.midi.spi                           \
  javax.sql                                      \
  javax.sql.rowset                               \
  javax.sql.rowset.serial                        \
  javax.sql.rowset.spi                           \
  javax.swing                                    \
  javax.swing.border                             \
  javax.swing.colorchooser                       \
  javax.swing.filechooser                        \
  javax.swing.event                              \
  javax.swing.table                              \
  javax.swing.text                               \
  javax.swing.text.html                          \
  javax.swing.text.html.parser                   \
  javax.swing.text.rtf                           \
  javax.swing.tree                               \
  javax.swing.undo                               \
  javax.swing.plaf                               \
  javax.swing.plaf.basic                         \
  javax.swing.plaf.metal                         \
  javax.swing.plaf.multi                         \
  javax.swing.plaf.nimbus                        \
  javax.swing.plaf.synth                         \
  javax.tools                                    \
  javax.transaction                              \
  javax.transaction.xa                           \
  javax.xml.parsers                              \
  javax.xml.bind                                 \
  javax.xml.bind.annotation                      \
  javax.xml.bind.annotation.adapters             \
  javax.xml.bind.attachment                      \
  javax.xml.bind.helpers                         \
  javax.xml.bind.util                            \
  javax.xml.soap                                 \
  javax.xml.ws                                   \
  javax.xml.ws.handler                           \
  javax.xml.ws.handler.soap                      \
  javax.xml.ws.http                              \
  javax.xml.ws.soap                              \
  javax.xml.ws.spi                               \
  javax.xml.ws.spi.http                          \
  javax.xml.ws.wsaddressing                      \
  javax.xml.transform                            \
  javax.xml.transform.sax                        \
  javax.xml.transform.dom                        \
  javax.xml.transform.stax                       \
  javax.xml.transform.stream                     \
  javax.xml                                      \
  javax.xml.crypto               \
  javax.xml.crypto.dom               \
  javax.xml.crypto.dsig              \
  javax.xml.crypto.dsig.dom          \
  javax.xml.crypto.dsig.keyinfo          \
  javax.xml.crypto.dsig.spec             \
  javax.xml.datatype                             \
  javax.xml.validation                           \
  javax.xml.namespace                            \
  javax.xml.xpath                                \
  javax.xml.stream                               \
  javax.xml.stream.events                        \
  javax.xml.stream.util                          \
  org.ietf.jgss                                  \
  org.omg.CORBA                                  \
  org.omg.CORBA.DynAnyPackage                    \
  org.omg.CORBA.ORBPackage                       \
  org.omg.CORBA.TypeCodePackage                  \
  org.omg.stub.java.rmi                          \
  org.omg.CORBA.portable                         \
  org.omg.CORBA_2_3                              \
  org.omg.CORBA_2_3.portable                     \
  org.omg.CosNaming                              \
  org.omg.CosNaming.NamingContextExtPackage      \
  org.omg.CosNaming.NamingContextPackage         \
  org.omg.SendingContext                         \
  org.omg.PortableServer                         \
  org.omg.PortableServer.CurrentPackage          \
  org.omg.PortableServer.POAPackage              \
  org.omg.PortableServer.POAManagerPackage       \
  org.omg.PortableServer.ServantLocatorPackage   \
  org.omg.PortableServer.portable                \
  org.omg.PortableInterceptor                    \
  org.omg.PortableInterceptor.ORBInitInfoPackage \
  org.omg.Messaging                              \
  org.omg.IOP                                    \
  org.omg.IOP.CodecFactoryPackage                \
  org.omg.IOP.CodecPackage                       \
  org.omg.Dynamic                                \
  org.omg.DynamicAny                             \
  org.omg.DynamicAny.DynAnyPackage               \
  org.omg.DynamicAny.DynAnyFactoryPackage        \
  org.w3c.dom                                    \
  org.w3c.dom.events                             \
  org.w3c.dom.bootstrap                          \
  org.w3c.dom.ls                                 \
  org.xml.sax                                    \
  org.xml.sax.ext                                \
  org.xml.sax.helpers
like image 139
Chase Avatar answered Nov 15 '22 12:11

Chase



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!