您好,登錄后才能下訂單哦!
本篇內容介紹了“java8到java17 api有哪些改動”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
先從jdk8到9的改動部分
java.applet 這個沒啥人用不用咋說了,棄用部分api
java.awt 大部分api改動,詳細方法不怎么用不貼了.
新增java.awt.desktop 一些桌面的操作,屏幕,睡眠,拖動,Ui等
一些新的ui,事件,焦點,圖片,任務欄,一些刪除等.Robot用的多點,新增個多重屏幕
Java.beans 新增了@BeanProperty@JavaBean 注釋信息之類
Java.io 這個常用點
InputStream新增了readAllBytes(),直接讀取字節不用再搞工具類了,不過太大的流還是不建議,readNBytes方法可以給定字節讀取,建議。transferTo可以直接復制輸出流 。
OutputStreamWriter新增了append方法直接追加字符串挺實用。
其他相應子類及輸出流也有新增一些方法,不怎么常用比如過濾配置等
java.lang.annotation下加了枚舉MODULE,主要對應模塊
java.lang.instrument Instrumentation新增了isModifiableModule模塊是否支持修改,redefineModule重新定義模塊。
java.lang.invoke包 MethodHandle和MethodHandles下新增很多方法,加的東西有點多不寫。
新增了StringConcatFactory,字符串常量池用于創建一些優化字符串串聯的方法。
實用部分就是反射里很多能通過句柄搞到。新增了VarHandle,這個支持各種變量操作訪問,內存屏障排序都很實用,寫的人挺多的自己搜不扯了。個人建議使用這個包下的api到時替代反射,到時采用aot編譯機器碼不用反射的配置了。
java.lang.management ThreadInfo新增了優先級和守護線程標志
java.lang.module 模塊化的包沒啥好說的,模塊化都靠它,基本上java9的類加載和8之前的是個大改動,擴展類退出舞臺主要是平臺類加載器,不談細節最實用的部分就是采用模塊化jre可以小很多內存占用少了。
java.lang.ref 新增了Cleaner,對象清理的,使用虛引用和引用隊列在對象從最強到最弱變化時通知清理。Cleaner.Cleanable 實現接口里的clean方法可以取消調用清理。
java.lang.reflect 反射里AccessibleObject 新增canAccess方法可以判斷下是否可訪問對象trySetAccessible方法嘗試設置標記。Constructor,Field,Method都新增了setAccessible。
Proxy的兩個靜態方法棄用
java.lang 這個包最重要稍微詳細點。很多啟用基本上包裝類型的new都別用了,多了模塊
Deprecated注解新增了forRemoval(),since(),表示刪除和啟用版本
Byte,short 新增了compareUnsigned 比較 0x == y0x < y0x > y
Character.新增許多字符集單碼常量太多不貼了
ClassLoader 新增許多實用方法,獲取包,加載器,平臺,資源等,主要還是模塊化的更改
Class 新增了根據模塊獲取類,獲取包,獲取模塊,棄用了newInstance()建議構造器。
Compiler jit編譯器差異太大,棄用了
Integer Long 新增了parseInt, parseUnsignedInt (CharSequence, int, int, int),long對應long
Math 新增7個實用方法floorDiv,floorMod,fma(double和float),multiply Exact,Full,High
Module,ModuleLayer,ModuleLayer.Controller,Package 模塊相關的
ProcessBuilder 新增了DISCARD的枚舉和startPipeline 啟用流鏈接
Process 新增children()子進程 ,descendants()快照,info()信息快照,onExit()終止流程,
pid()返回進程id,supportsNormalTermination()終止的判斷 toHandle()返回句柄。挺實用。
Runtime.Version javase版本字符串。
StackWalker 新增類,線程快照堆棧打印挺方便
String 新增chars 字符內流,codePoints 代碼內流。char數組byet數組,細節優化挺多,比如+這些優化更好,主說api不說細節。
System 新增了getLogger的兩個方法。主要是日志jvm日志也納入進來了。指定下module配合java.logging可以指定slf4j,我就用他實現個簡單日志觀測jvm更方便。
Thread 新增個構造方法,新增了onSpinWait()告訴cpu我是循環中,提高自選效率,實用.
java.math BigInteger,BigDecimal 四舍五入,平方根這些方法
java.net.spi java.net包內的提供商擴展,定制些url協議之類的比較方便。
java.net 認證,代理,tcp,udp,ip這些新增很多實用的配置參數方法,方便獲取。
java.nio 各種buffer新增重置流緩沖區標記等等更方便了。
java.rmi.server UnicastRemoteObject新增了exportObject。直接導出不用jndi那么麻煩了
java.security 新增太多了。SecureRandom用的多點加了幾個實用方法。
java.security.acl Acl這些被Policy 替代了,棄用了
java.security.cert 新增URICertStoreParameters,RFC 5280定義的uri向算法實現提供必要參數
java.security.spec 大部分算法過期刪除,新增幾個方法。
java.sql 這個jdbc相關用的多
DriverManager 新增drivers方法獲取驅動流
ConnectionBuilder 連接的構建
Connection 新增幾個默認方法 請求前后的方法,設置分片驗證等
DatabaseMetaData 新增supportsSharding檢索是否支持分片。其他幾個是分片接口不寫了
java.time 對java8的日期新增幾個實用方法
java.util.concurrent.atomic 這個雖然重要新增太多了,增強了很多方法。
java.util.concurrent 這個同上方法不貼了僅說下新類。
Flow。里邊好幾個訂閱發布接口,不需要rxjava這些了。
SubmissionPublisher。異步向當前訂閱者提交(非空)項目,直到其關閉
java.util.jar 刪除了Pack200里屬性監聽,
JarFile新增baseVersion,getVersion,isMultiRelease,runtimeVersion 寫框架多版本java jar實用
java.util.logging 上邊簡單提了,挺多增強
java.util.regex Matcher新增replaceAll replaceFirst appendTail appendReplacement 增強
results匹配的結果流
java.util.spi 主要新增下面三個,比如開發javac,jar,jlink之類用到
ToolProvider 命令行工具的接口,以提供一種在不一定啟動新 VM 的情況下調用的方法
ResourceBundleProvider 用于加載指定模塊的資源捆綁包的提供商界面
AbstractResourceBundleProvider 基本抽象類
java.util.stream 新增多個方法,流這邊更好用了。
java.util.zip 刪除倆方法,新增CRC32C類,擴展ZipEntry的get/setTimeLocal
java.util 新增挺多方法,比如集合隊列map等支持流的函數,太重要挑幾個用最多的吧
Arrays compare,compareUnsigned,equals,mismatch 各種類型增強
Objects requireNonNullElse 為空返回第二個
Properties 添加很多實用方法,主要是重寫了hashtable的相關方法。
Scanner 正則匹配這些,findAll(Pattern/string) tokens()
ServiceLoader 新增Provider findFirst()stream()load(ModuleLayer, Class) 。擴展spi比較實用
List,Map,Set 最實用的靜態方法of(),創建太方便了。不過注意是只讀的。
Enumeration asIterator() 這個也實用,直接返回迭代
javax.accessibility 新增了AccessibilityProvider 屏幕這些訪問
javax.annotation.processing 新增@Generated 標記生成源碼注釋RoundEnvironment 新增倆方法
javax.crypto ExemptionMechanism刪除了finalize
javax.imageio 棄用部分方法 新增javax.imageio.plugins.tiff 處理tiff格式圖片api
javax.lang.model 新增部分接口 主要模塊部分的新增接口方法
javax.management 部分方法移除新增 新增@ConstructorParameters 運行時判斷參數名
javax.naming 一個方法刪除和棄用
javax.net.ssl 新增部分屬性和棄用
javax.sql 大部分接口增強,比如DataSource,XADataSource,日志創建這些
javax.swing 太多增強 不過界面用的少不扯了
javax.tools 大部分增強,比如StandardJavaFileManager根據path這些獲取很方便
javax.xml 刪除了部分api
其他nashorn增強es6(15被干掉),默認切換g1,doc增強,aot,jsheel等太多改變,主要看實用api不扯那些
java10更改部分
java.io 方法增強ByteArrayOutputStream字符串指定編碼,
PrintStream,PrintWriter 打印到文件,實用.比如指定setOut后可以不看控制臺直接按編碼寫入文件
Reader 新增了transferTo(Writer)
java.lang.invoke
MethodType 新增了lastParameterType()返回最后類型,沒有就是void
java.lang jdk9新增的幾個類被干掉了,多處方法啟用刪除新增 大多不重要
java.net URLDecoder/Encoder 新增了對應方法的Charset,可以少寫倆捕獲異常
java.nio Channels新增一newread/write方法 FileStore新增了getBlockSize()獲取塊大小
java.security 部分棄用及新方法
java.time 新增幾個方法
java.util.concurrent StampedLock增強4個判斷方法 FutureTask重寫了tostring
java.util.jar/spi/stream 個別類新增一兩個方法不重要
java.util 新增一些默認方法,List/Map/set新增了copyOf,可以方法的復制了
java.management RuntimeMXBean加了pid,ThreadMXBean加了倆獲取線程信息的方法.個人擴展該模塊可以省不少jps,ps,top,jstat查了
其他大部分模塊新增個別常量方法
java11更改部分
java.io reader,write,input,out這些的相關類及子類一些9開始的方法擴展方法添加修復之類
java.lang.invoke 新增ConstantBootstraps,動態計算各種常量,實用
java.lang.ref Reference新增了clone方法 ,引用復制方便了
java.lang 這個包肯定重要還是大致寫下,部分棄用刪除如Thread的stop/destroy和runtime的
Character內部類新增部分編碼常量,新增int的toString方法
Class getNestHost嵌套類訪問getNestMembers包含的類數組,isNestmateOf 是不是類里的一家人
StringBuffer/Builder 新增compareTo直接比較sb
String 新增isBlank/lines/repeat/strip/stripLeading/stripTrailing 實用方法看名字就知道
CharSequence 新增compare方法比較返回
java.nio.fileFiles新增readString和writeString Path新增了of 。這些太實用了
ByteBuffer等幾個基礎類型的buffer新增了mismatch
java.security 大部分api新增一些方法和個別棄用刪除
java.util.concurrent PriorityBlockingQueue擴展幾個方法,TimeUnit加了個convert(Duration)
java.util.function Predicate加了個not
java.util.regex Pattern新增了asMatchPredicate 創建謂詞
java.util.zip Deflater和Inflater新增了bytebuffer的三四個方法
java.util 幾個類新增的isEmpty等ArrayList.hashcode和equals方法重寫了,
Collection加個toArray(IntFunction)
javax.crypto.spec 新增ChaCha20ParameterSpec ChaCha20的算法javax.security.auth Policy刪了
java.corba 被刪掉了
java.desktop 挺多更改新增方法,桌面不提了
java.sql javax.transaction.xa改為java.transaction.xa
java.xml.crypto 部分增強
java.xml.ws,java.xml.bind 被刪除了,用到就從maven那里下載下吧
新增http的客戶端,支持http2這些,可以不用其他http包了
Java
Java12-17 17正式版還得4個月用11以上得人也少合并說吧,finalize方法部分大多刪除不貼了
java.io
@Serial 表示注釋字段或方法是Java 對象序列化規范定義的序列化機制的一部分,14添加
CharArrayReader 添加read(CharBuffer)
Console charset()獲取字符集
InputStreamReader 新增read(CharBuffer)
InputStream 新增skipNBytes 可跳過字節長 jdk12添加
PrintStream 新增write,writeBytes(byte[]) 寫入字節數組 14添加
java.lang.annotation ElementType新增了RECORD_COMPONENT 記錄類得
java.lang.constant 常量包不用說了.適用于字節代碼讀取和編寫 API、引導、字節代碼內在 API 以及編譯時間或鏈接時間程序分析工具
java.lang.invoke 多個類和方法得增強,棄用等,主要句柄這塊兒
java.lang.ref Reference新增refersTo(Object),測試是否引用對象,jdk16新增
java.lang.reflect
RecordComponent 新增record類的反射組件
InvocationHandler 新增invokeDefault靜態方法。直接根據方法調用代理對象,實用
AnnotatedType 新增獲取注解的三個方法
java.lang.runtime 這個包對java語言提供低級別的運行時支持,jdk14新增
ObjectMethods類 Java 編譯器可以使用這些方法來實現比如object類下的各種方法重寫,實用
java.lang 基礎類型新增describeConstable()實例描述符
Character 新增許多字符集
ClassNotFoundException等很多異常的getCause()被刪除了,trycatch里得注意下
NullPointerException 更新了getMessage()和fillInStackTrace()
Class 新增了隱藏類,密封類,記錄類,內部類,數組,等得相關方法
Math 新增absExact方法對int,long,絕對精確整數超出最大最小異常,jdk15
Record 這個不用說了Lombok可以不用了,注意可序列化readObject和writeObject被忽略
String 新增formatted格式化字符,indent 縮進 ,resolveConstantDesc,常量描述符
stripIndent 刪除頭尾空格 transform 允許把函數應用到該字符 translateEscapes 轉義序列化
Thread 虛擬線程得方法看loom項目郵件一直在各種測試估計能趕上17.跟go的goroutine差不多
java.net
DatagramSocket 新增了joinGroup和leaveGroup加入或離開組,jdk17新增
URLDecoder里刪除了URLDecoder()
SecureCacheResponse 新增了getSSLSession jdk12
UnixDomainSocketAddress 新增的Unix域套接字。本機進程通信效率最高,只復制數據。jdk16新增,windows也支持
java.nio.channels
SelectorProvider新增openServerSocketChannel,openSocketChannel
ServerSocketChannel,SocketChannel新增open(ProtocolFamily)
java.nio.file FileSystems新增newFileSystem 根據path,Files新增mismatch返回不匹配位置
java.nio 各種Buffer新增一些緩存區設置獲取共享壓縮清除等
java.security 一些證書更新棄用刪除方法等
java.text 新增CompactNumberFormat LDML的緊湊數字格式規范,其他添加獲取他的方法
java.time 日文字體等格式簡單修改
java.util.concurrent.locks LockSupport 新增setCurrentBlocker通過getBlocker當前線程的返回對象
java.util.concurrent
ThreadLocalRandom刪除nextGaussian新增nextFloat,還有三makeDouble/int/longsSpliterator
CompletionStage新增5個默認方法,CompletableFuture也自動繼承
ForkJoinPool 新增invokeAny(2個)和invokeAll
java.util.random 隨機數生成的通用API的類和接口.jdk17新增的重寫的包
java.util.stream 流接口新增multimap方法,跟c++的一樣,是關聯式容器,Stream還新增toList
java.util
HashSet toArray有改動
HexFormat 字節,字符和十六進制編碼的字符串之間進行轉換的工具類 jdk17
Objects,Random,NoSuchElementException新增幾個方法,SplittableRandom刪除幾個新增幾個
javax.crypto Cipher重寫了tostring
javax.net.ssl HttpsURLConnection新增了getSSLSession()方法,上邊有個
javax.annotation.processing ProcessingEnvironment新增isPreviewEnabled(),是不是預覽版
javax.lang.model 各種模型更新,細節挺多每個版本必須改的東西,比如加上新版本的串
javax.tools ToolProvider的ToolProvider()方法刪除
java.util.logging LogRecord新增了getLongThreadID用于晚點替換getThreadID
java.management.rmi 挺多內容刪除
javax.naming.ldap.spi ldapv3版本的擴展包
java.net.http HttpRequest新增了newBuilder(2個) HttpRequest.BodyPublishers新增concat
javax.xml DocumentBuilderFactory和SAXParserFactory新增了命名空間支持
awt,swing的各種更改就不說了,剔除多個如nashorn之類用的少的模塊,刪除aot,jit,macos下增強
沒啥結語,jdk16開始啟用了c++14,像 Vector API 開發人員需要了解HotSpot的自動矢量化支持及其局限性.panama項目還有對外部存儲,c/c++的api直接訪問,從8升級你怕了嗎.
“java8到java17 api有哪些改動”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。