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