java 8 與 java 7 , 包 與 類 新增和刪除的對比
阿新 • • 發佈:2019-02-05
java8 新增:
java.time
java.util.function
java.util.stream
com.sun.source.doctree
com.sun.org.apache.xml.internal.security.signature.reference
java.beans.MethodRef.java java.io.DefaultFileSystem.java java.io.UncheckedIOException.java java.lang.FunctionalInterface.java java.net.HostPortrange.java java.net.HttpConnectSocketImpl.java java.net.InetAddressContainer.java java.net.package-info.java java.net.URLPermission.java java.nio.CharBufferSpliterator.java java.security.DomainLoadStoreParameter.java java.security.package-info.java java.security.PKCS12Attribute.java java.sql.DriverAction.java java.sql.JDBCType.java java.sql.SQLType.java java.util.ArrayPrefixHelpers.java java.util.ArraysParallelSortHelpers.java java.util.Base64.java java.util.Comparators.java java.util.DoubleSummaryStatistics.java java.util.IntSummaryStatistics.java java.util.LongSummaryStatistics.java java.util.Optional.java java.util.OptionalDouble.java java.util.OptionalInt.java java.util.OptionalLong.java java.util.PrimitiveIterator.java java.util.Spliterator.java java.util.Spliterators.java java.util.SplittableRandom.java java.util.StringJoiner.java java.util.Tripwire.java javax.tools.DocumentationTool.java com.sun.javadoc.AnnotatedType.java com.sun.javadoc.package-info.java java.lang.annotation.Native.java java.lang.annotation.Repeatable.java java.lang.invoke.AbstractValidatingLambdaMetafactory.java java.lang.invoke.InfoFromMemberName.java java.lang.invoke.InnerClassLambdaMetafactory.java java.lang.invoke.LambdaConversionException.java java.lang.invoke.LambdaMetafactory.java java.lang.invoke.ProxyClassesDumper.java java.lang.invoke.SerializedLambda.java java.lang.invoke.Stable.java java.lang.invoke.TypeConvertingMethodAdapter.java java.lang.reflect.AnnotatedArrayType.java java.lang.reflect.AnnotatedParameterizedType.java java.lang.reflect.AnnotatedType.java java.lang.reflect.AnnotatedTypeVariable.java java.lang.reflect.AnnotatedWildcardType.java java.lang.reflect.Executable.java java.lang.reflect.MalformedParametersException.java java.lang.reflect.Parameter.java java.lang.reflect.WeakCache.java java.nio.file.FileTreeIterator.java java.security.acl.package-info.java java.security.cert.CertPathChecker.java java.security.cert.package-info.java java.security.cert.PKIXRevocationChecker.java java.security.interfaces.package-info.java java.security.spec.DSAGenParameterSpec.java java.security.spec.package-info.java java.util.concurrent.CompletableFuture.java java.util.concurrent.CompletionException.java java.util.concurrent.CompletionStage.java java.util.concurrent.CountedCompleter.java java.util.spi.CalendarDataProvider.java java.util.spi.CalendarNameProvider.java java.util.spi.ResourceBundleControlProvider.java java.util.zip.ZipUtils.java javax.lang.model.AnnotatedConstruct.java javax.management.timer.TimerAlarmClock.java javax.rmi.CORBA.ClassDesc.java javax.rmi.CORBA.GetORBPropertiesFileAction.java javax.rmi.CORBA.PortableRemoteObjectDelegate.java javax.rmi.CORBA.Stub.java javax.rmi.CORBA.StubDelegate.java javax.rmi.CORBA.Tie.java javax.rmi.CORBA.Util.java javax.security.auth.package-info.java javax.security.cert.package-info.java javax.security.sasl.package-info.java javax.xml.validation.SchemaFactoryConfigurationError.java com.sun.jmx.snmp.SnmpPermission.java com.sun.security.auth.package-info.java com.sun.security.jgss.ExtendedGSSCredential.java com.sun.security.jgss.package-info.java com.sun.source.tree.AnnotatedTypeTree.java com.sun.source.tree.IntersectionTypeTree.java com.sun.source.tree.LambdaExpressionTree.java com.sun.source.tree.MemberReferenceTree.java com.sun.source.util.DocSourcePositions.java com.sun.source.util.DocTreePath.java com.sun.source.util.DocTreePathScanner.java com.sun.source.util.DocTrees.java com.sun.source.util.DocTreeScanner.java com.sun.source.util.Plugin.java com.sun.source.util.SimpleDocTreeVisitor.java java.util.concurrent.atomic.DoubleAccumulator.java java.util.concurrent.atomic.DoubleAdder.java java.util.concurrent.atomic.LongAccumulator.java java.util.concurrent.atomic.LongAdder.java java.util.concurrent.atomic.Striped64.java java.util.concurrent.locks.StampedLock.java javax.lang.model.type.IntersectionType.java javax.lang.model.util.AbstractAnnotationValueVisitor8.java javax.lang.model.util.AbstractElementVisitor8.java javax.lang.model.util.AbstractTypeVisitor8.java javax.lang.model.util.ElementKindVisitor8.java javax.lang.model.util.ElementScanner8.java javax.lang.model.util.SimpleAnnotationValueVisitor8.java javax.lang.model.util.SimpleElementVisitor8.java javax.lang.model.util.SimpleTypeVisitor8.java javax.lang.model.util.TypeKindVisitor8.java javax.security.auth.callback.package-info.java javax.security.auth.kerberos.package-info.java javax.security.auth.login.package-info.java javax.security.auth.spi.package-info.java javax.security.auth.x500.package-info.java com.sun.imageio.plugins.bmp.BMPCompressionTypes.java com.sun.jmx.snmp.agent.AcmChecker.java com.sun.jmx.snmp.agent.LongList.java com.sun.security.auth.callback.package-info.java com.sun.security.auth.login.package-info.java com.sun.security.auth.module.package-info.java com.sun.corba.se.impl.util.IdentityHashtableEntry.java com.sun.org.apache.xalan.internal.utils.FeatureManager.java com.sun.org.apache.xalan.internal.utils.FeaturePropertyBase.java com.sun.org.apache.xalan.internal.utils.XMLSecurityManager.java com.sun.org.apache.xerces.internal.utils.XMLLimitAnalyzer.java com.sun.org.apache.xerces.internal.utils.XMLSecurityManager.java com.sun.org.apache.xml.internal.security.encryption.AbstractSerializer.java com.sun.org.apache.xml.internal.security.encryption.DocumentSerializer.java com.sun.org.apache.xml.internal.security.encryption.Serializer.java com.sun.org.apache.xml.internal.security.utils.ClassLoaderUtils.java com.sun.org.apache.xml.internal.security.utils.DOMNamespaceContext.java com.sun.org.apache.xml.internal.security.utils.JDKXPathAPI.java com.sun.org.apache.xml.internal.security.utils.JDKXPathFactory.java com.sun.org.apache.xml.internal.security.utils.Signature11ElementProxy.java com.sun.org.apache.xml.internal.security.utils.XalanXPathAPI.java com.sun.org.apache.xml.internal.security.utils.XalanXPathFactory.java com.sun.org.apache.xml.internal.security.utils.XPathAPI.java com.sun.org.apache.xml.internal.security.utils.XPathFactory.java com.sun.org.apache.xml.internal.serializer.utils.SerializerMessages_pt_BR.java com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerPhysical.java com.sun.org.apache.xml.internal.security.keys.content.DEREncodedKeyValue.java com.sun.org.apache.xml.internal.security.keys.content.KeyInfoReference.java com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolverContext.java com.sun.org.apache.xml.internal.security.keys.content.x509.XMLX509Digest.java com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.DEREncodedKeyValueResolver.java com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.KeyInfoReferenceResolver.java com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.PrivateKeyResolver.java com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.SecretKeyResolver.java com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.SingleKeyResolver.java com.sun.org.apache.xml.internal.security.keys.keyresolver.implementations.X509DigestResolver.java
java8 刪除:
sunw com.sun.mirror com.sun.jmx.trace java.io.Win32FileSystem.java java.net.NetUtil.java java.text.BreakDictionary.java java.text.CollationRules.java java.text.DictionaryBasedBreakIterator.java java.text.RuleBasedBreakIterator.java java.util.XMLUtils.java java.lang.invoke.InvokeGeneric.java com.sun.security.auth.PolicyParser.java com.sun.security.auth.SubjectCodeSource.java com.sun.org.apache.bcel.internal.util.Objects.java com.sun.org.apache.xalan.internal.utils.Objects.java com.sun.org.apache.xerces.internal.utils.Objects.java com.sun.org.apache.xml.internal.security.utils.CachedXPathAPIHolder.java com.sun.org.apache.xml.internal.security.utils.CachedXPathFuncHereAPI.java com.sun.org.apache.xml.internal.security.utils.XPathFuncHereAPI.java com.sun.org.apache.xml.internal.security.transforms.implementations.FuncHereContext.java
對比方法:
下載jdk7 和jdk8 ,解壓其中的src.zip檔案,分別放在 D:\\tmp\\java7 和 D:\\tmp\\java8 下面
使用如下程式碼進行處理(jdk8編譯執行):
package test; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Arrays; import java.util.Comparator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Queue; import java.util.HashMap; public class DifferCheck { public static void main(String[] args) throws IOException { // 比較 File java7 = new File("D:\\tmp\\java7"); File java8 = new File("D:\\tmp\\java8"); // 宣告時自動識別型別 Pair<File, File> root = new Pair<>(java7, java8); Queue<Pair<File, File>> queue = new LinkedList<>(); queue.add(root); List<File> removed = new LinkedList<>(); List<File> add = new LinkedList<>(); while (!queue.isEmpty()) { Pair<File, File> p = queue.poll(); File j7dir = p.getFirst(); File j8dir = p.getSecond(); if (j7dir.isDirectory()) { List<File> j7files = Arrays.asList(j7dir.listFiles()); List<File> j8files = Arrays.asList(j8dir.listFiles()); Map<String, File> j7names = getFileNames(j7files); Map<String, File> j8names = getFileNames(j8files); j7files.forEach(j7file -> { if (!j8names.containsKey(j7file.getName())) { removed.add(j7file); } else { queue.add(new Pair<File, File>(j7file, j8names .get(j7file.getName()))); } }); j8files.forEach(j8file -> { if (!j7names.containsKey(j8file.getName())) { add.add(j8file); } }); } } Comparator<File> c = (a, b) -> { if (a.getName().endsWith(".java")) { if (b.getName().endsWith(".java")) { return 0; } return 1; } if (b.getName().endsWith(".java")) { return -1; } return 0; }; add.sort(c); removed.sort(c); // 寫檔案 File addFiles = new File("D:\\tmp\\add.txt"); File removeFiles = new File("D:\\tmp\\remove.txt"); if (addFiles.exists()) { addFiles.delete(); } if (removeFiles.exists()) { removeFiles.delete(); } FileWriter aw = new FileWriter(addFiles); FileWriter rw = new FileWriter(removeFiles); // 不需要加final修飾符,可能是編譯器處理 int la = "D:\\tmp\\java8\\".length(); add.forEach(file -> { try { aw.write(file.getCanonicalPath().substring(la) .replace('\\', '.') + "\n"); } catch (Exception e) { e.printStackTrace(); } }); int lr = "D:\\tmp\\java7\\".length(); removed.forEach(file -> { try { rw.write(file.getCanonicalPath().substring(lr) .replace('\\', '.') + "\n"); } catch (Exception e) { e.printStackTrace(); } }); aw.close(); rw.close(); } private static Map<String, File> getFileNames(List<File> files) { Map<String, File> map = new HashMap<>(); files.forEach(file -> { map.put(file.getName(), file); }); return map; } static class Pair<T, R> { private T t; private R r; public Pair(T t, R r) { this.t = t; this.r = r; } public T getFirst() { return t; } public void setFrist(T t) { this.t = t; } public R getSecond() { return r; } public void setSecond(R r) { this.r = r; } } }