确定Java类是否是可移植的SE类

时间:2013-07-31 06:45:30

标签: java

我正在研究Java代码分析器(使用Trees API的AST东西),我正在尝试创建一个关于被检查代码是否使用非可移植API的报告。像太阳包这样的东西应该引起警告。 SE 7便携式课程的定义列表在哪里?有没有比SE Javadocs更多的机器可解析?如果Javadocs是“可移植”列表,它们是如何从OpenJDK的所有java源生成的?便携式代码是分开的还是......?

2 个答案:

答案 0 :(得分:1)

核心SE类由JDK构建过程中使用的文件之一定义,可在以下位置找到: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

答案 1 :(得分:0)

如果您对.class文件进行分析,则可以使用Javassist http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/来获取从类引用的所有类名的列表。然后你可以分析类包。包含Java公共API的类位于java,javax和org.omg,org.w3c.dom,org.xml.sax包的子包中