Java 10-yň möhüm aýratynlyklary
] _ .Agny, indi başlanan üýtgeýjiniň görnüşini kesgitläp bilmersiňiz, ýöne bir zat ýazyp bilersiňiz:var list = new ArrayList<String>(); //перед нами ArrayList<String>
var stream = list.stream(); // перед нами Stream<String>
Bu, öň ulanmaly boljak ArrayList <String> görnüş kesgitlemesiniň gaýtalanmagyny ýok edýär. Varyň açar söze öwrülmän, ätiýaçlandyrylan görnüşdigini bellemek gyzykly. Varagny, üýtgeýjiniň, usulyň ýa-da bukjanyň ady hökmünde var ulanyp bilersiňiz. Theöne synpy şeýle atlandyryp bilmersiňiz (nähili ýitgi!). [296] JDK tokaýyny bir ammarda birleşdirmek . JDK 9-da sekiz ammar bar - kök, corba, iň nokat, jaxp, jaxws, jdk, langtools, nashorn. Java 10-da bu tokaý, birek-birege bagly üýtgeşmeleriň ammarlarynda atom borçlaryny ýerine ýetirmek üçin bir ammarda birleşdiriler. [304] Zibil-kollektor interfeýsi, zibil ýygnamagyna gözegçilik etmek üçin döredijiler tarapyndan ulanyp boljak interfeýs däl. Munuň ýerine, alternatiw kollektorlary çalt we aňsat birleşdirmäge mümkinçilik berýän JVM deslapky kodynda arassa zibil ýygnaýjy interfeýsini alýarys. JVM-e öz hapa kollektoryny goşmagy arzuw edenler bu gowulaşmakdan iň hoşal bolarlar. [307] G1 hapa ýygnaýjy üçin parallel doly GC . JDK 9-da G1 deslapky hapa ýygnaýjy boldy, öňem hapa ýygnaýjy Parallel GC bolup, birnäçe sapakdan zibil ýygnap bilýärdi. Indi G1 muny hem edip biler, ozal bir kynçylykda sebäp bolýan bir sapakda edipdi. XX:ParallelGCThreads.
Theeri gelende aýtsak, döredijiler - [310] Programma synpy maglumatlary paýlaşmak parametrini ulanyp, sapaklaryň sanyny düzüp bilerler - Java 10-da kabul edilen bu ösüş, ýüklemegi we yzarlamagy gowulandyrýar, bar bolan synp paýlaşmasy (CDS) aýratynlygyny giňeldýär. amaly sapaklaryň umumy arhiwde ýerleşmegine rugsat bermek. * Klass giňeldilen faýllar bilen gysga işler üçin synp maglumatlary paýlaşmak ýa-da CDS. Bu funksiýa sapaklaryň belli bir bölegini saýlamaga, olary gaýtadan işlemäge we ýörite arhiwde gysmaga mümkinçilik berýär. Bularyň hemmesi ýady tygşytlamak üçin edilýär. Köplenç JVM-iň dürli mysallary adaty kitaphana girýän şol bir synplary ýükleýär. CDS bu JVM mysallarynyň hemmesine ýerleşdirilen synplar bilen bir arhiwi paýlaşmaga mümkinçilik berýär. Bu programmanyň ýükleniş wagtyny we ýadyň ulanylyşyny azaldar. Aslynda, CDS JVM başlangyç işini gowulandyrýar we 5-nji wersiýasyndan başlap, köp sanly JVM şol bir fiziki ýa-da wirtual maşynda işleýän mahaly çeşmäniň yzyny azaldýar. Emma öň CDS-ni ulanmak diňe bootstrap ýükleýjisi bilen çäklenýärdi. Indi “Programma CDS” atly giňeldilen wersiýa beýleki ýükleýjiler üçin synplar bilen ýörite arhiwleri ýüklemäge mümkinçilik berýär. ] _ Bu, birbada däl (ýa-da asla ýok) däl-de, aýratyn sapaklary gymmatsyz saklamaga mümkinçilik berer. [313] -erli sözbaşy nesil guralyny (java) aýyryň . Java 9-da dil döredijiler gereksiz gurallary işjeň aýyryp başladylar we JEP 313 bu gowy işi dowam etdirýär. Javah guraly, kodda ýerli usullar bar bolsa JNI sözbaşylaryny döredýär. Sagdynmy? Elbetde, ýöne JDK 8-den başlap, ýerli javac düzüjiniň özi JNI sözbaşylaryny döredip biler. Şeýdip, indi java-dan dynmak kararyna geldiler. Theeri gelende aýtsak, häzirki wagtda JNI-ni çalşyp biljek Panama taslamasy işlenip düzülýär . ] _ indi hepde (fw), sebit (rg) we wagt zolagy (tz) artykmaçlygy goldanylar. [316] Alternatiw ýat enjamlaryna üýşmek Bu täzelik DRAM-dan başga ýat görnüşlerini ulanýanlara kömek eder. Tehnologiýalar yzygiderli üýtgäp durýandygy sebäpli, şol bir interfeýs we DRAM-a meňzeş öndürijilik aýratynlyklary bilen üýtgemeýän ýadyň ulanylmagy häzirki wagtda obýektiw hakykat. Şeýlelik bilen, JEP 316 JVM-e beýleki ýat görnüşlerine üýşmäge mümkinçilik berýär. [317] Synag Java-esasly JIT düzüjisi . JVM-leriň köpüsini Java-da täzeden ýazmagy teklip edýän Metropolis taslamasy ýakynda yglan edildi. Bilmedik bolsaňyz, häzirki wersiýa C ++ görnüşinde ýazylýar. Garaz, eýýäm bilýän bolsaňyz, başda beýle pikir size geň görüner. JVM Java-da ýazylanlygy sebäpli, JVM-i işletmek üçin JVM gerek bolmazmy? Biri-birine garşy aýnalary ýada salýan gaýtalanma. Şeýle-de bolsa, hakykat birneme üýtgeşik: diňe JVM Java-da ýazylanlygy sebäpli, ony bytekodlara düzmeli diýmek däl. Aslynda AOT ýygyndysyny ulanyp bilersiňiz, soň bolsa JIT öndürijiligi ýokarlandyrmak üçin işleýän ýaly kod düzýär.
Java koduny düzmek üçin javac ýaly gural köplenç ulanylýar. Java programmasyny bytekodlar bilen synp faýllarynyň toplumyna öwürýär. Ondan soň, JVM bytekodyňyzy işledýär we terjimeçisi olary prosessor görkezmelerine öwürýär. Terjimeçiden başga-da, JVM-de içerki düzüjisi bar we prosessor üçin bytekoddan görkezmeler döredip biler. Bu, iş wagtynyň düzülişi, başlangyç wagtynda düzmek diýilýär. Adatça köplenç ulanylýan kod şeýle ýygyndylara sezewar edilýär - bu öndürijiligi ýokarlandyrýar. Düzediji hereketleri dürli usullar bilen ýerine ýetirip biler: JIT düzmek (wagtynda) - dinamiki, programma ýerine ýetirilende dogry ýa-da AOT düzmek (öňünden) - ýerine ýetirilmezden. Jaotc AOT düzüjisi JDK 9-da hödürlendi. Häzirki wagtda Hotspot JVM-de iki sany JIT düzüjisi bar, C1 (tizlik üçin) we C2 (optimizasiýa üçin). |
[1-9][0-9]*((\.0)*\.[1-9][0-9]*)*
Täze API-ler
JDK 10 standart synp kitaphanalaryna 73 goşundy bar.-
java.awt.Toolkit
int getMenuShortcutKeyMaskEx ()
: Haýsy giňeldilen üýtgediji açaryň gysga menýu üçin degişli tizlendiriji açarydygyny kesgitleýär. -
java.awt.geom.Path2D:
void trimToSize ()
: Bu mysalyň göwrüminiPath2D
häzirki ululygyna görä kesgitleýär. Programma, amaly saklamagy azaltmak üçin bu amaly ulanyp biler. Içerki synplara şol bir usul goşuldyPath2D.Double
wePath2D.Float
. -
java.io.ByteArrayOutputStream:
String toString (Charset)
: aşa ýüklenentoString
, görkezilen kodlamany ulanyp, baýtlary kodlamak arkaly buferiň mazmunyny setire öwürýär. -
java.io.PrintStream we lang.io.PrintWriter:
Bu synplaryň ikisinde-de goşmaça argument alýan üç sany täze konstruktor bar
charset
. -
java.io.Okyjy:
long transferTo (Writer)
: Bu okyjydan ähli nyşanlary okaýar we nyşanlary okalýan tertipde berlen ýazyja ýazýar. -
java.lang.Runtime.Version:
Setir meýdanlarynyň täze wersiýasy (JEP 322) üçin bitewi bahany yzyna gaýtaryp berýän dört täze usul :
feature ()
,interim ()
we .patch ()
update ()
-
java.lang.StackWalker.StackFrame:
-
Setir getDescripttor ():
Java wirtual maşyn spesifikasiýasy bilen kesgitlenişi ýaly, bu çarçuwanyň çarçuwasy bilen görkezilen usula gaýtaryp berýär.
-
Setir getMethodType ():
MethodType
parametr görnüşlerini we stakanyň çarçuwasy bilen görkezilen usul üçin gaýdyp beriş görnüşini görkezýär . -
java.lang.invoke.Metod görnüşi:
Class <?> LastParameterType (): возвращает последний тип параметра этого типа метода. Если этот тип не имеет параметров, instead of него возвращается meaning
sentinel void.class
. -
java.lang.management.RuntimeMXBean:
long getPid ()
возвращаетpid
запущенной виртуальной машины Java. -
java.lang.management.ThreadMXBean:
ThreadInfo [] dumpAllThreads (boolean, boolean, int):
возвращает информацию о потоке для всех потоков в реальном времени с трассировкой стека с указанным максимальным количеством элементов и информацией о синхронизации. -
ThreadInfo [] getThreadInfo (long [], boolean, boolean, int):
возвращает информацию о потоке для каждого потока, чья идентификация находится во входном массиве, с трассировкой стека указанного максимального количества элементов и информацией о синхронизации.
-
java.lang.reflect.MalformedParameterizedTypeException:
добавлен новый конструктор, который принимает подробное сообщение в виде строки в качестве параметра.
-
java.net.URLDecoder и java.net.URLEncoder:
оба этих класса получor новые перегруженные методы расcodeирования и codeирования, которые используют
charset
в качестве дополнительного параметра. -
java.nio.channels.Channels:
Два новых статических перегруженных метода,
newReader (ReadByteChannel, Charset)
иnewWriter (WriteByteChannel, Charset)
, которые позволяют использоватьcharset
. -
java.nio.file.FileStore:
long getBlockSize ()
: возвращает количество byteов на блок в этом хранorще файлов. -
java.time.chrono:
три класса в этом пакете,
HijrahEra
,MiinguoEra
иThaiBuddhistEra
, получor методString getDisplayName (TextStyle, Locale)
. Он возвращает текстовое Name, используемое для идентификации эпохи, подходящее для представления пользователю. -
java.time.format.DateTimeFormatter:
localizedBy (Locale)
: возвращает копию этого форматтера с локализованными значениями языка, календаря, региона, десятичного стиля и / or часового пояса, которые заменяют значения в этом формате. -
java.util:
DoubleSummaryStatistics
,IntSummaryStatistics
иLongSummaryStatistics
получor новый конструктор, который принимает четыре числовых значения. Он создает непустой экземпляр с указанным счетчиком, минимумом, максимумом и суммой. -
java.util.List, java.util.Map и java.util.Set:
каждый из этих интерфейсов обзавёлся новым статическим методом
copyOf (Collection)
. Они возвращают неизменяемыеList
,Map
orSet
, содержащие элементы данной коллекции, в своем порядке итерации. -
java.util.Optional, java.util.OptionalDouble, java.util.OptionalInt, java.util.OptionalLong:
каждый из этих классов получает новый метод
orElseThrow ()
, который по существу делает то же самое, что иget ()
, то есть если condition выполняется, meaning возвращается. В противном случае генерируется исключениеNoSuchElementException
. -
java.util.Formatter и java.util.Scanner:
Оба этих класса получor три новых конструктора, которые на вход получают
charset
в дополнение к другим аргументам. -
java.util.Properties:
Здесь появился новый конструктор, который принимает аргумент
int
. Это создает пустой список свойств без значений по умолчанию и с начальным размером, содержащим указанное количество элементов без необходимости динамического изменения размера. Также появилась новая, перегруженная version методаreplace
, которая принимает три параметраObject
и возвращает логическое meaning. -
java.SplittableRandom:
void nextBytes (byte [])
: заполняет предоставленный пользователем массив byteов с генерируемыми псевдослучайными byteами. -
java.util.concurrent.FutureTask:
добавлен метод
toString ()
, который возвращает строку, идентифицирующуюFutureTask
, а также ее состояние завершения. Состояние (в скобках) содержит одну из строк: «Completed Normally» (нормальное завершение), «Completed Exceptionally» (завершение с исключением), «Cancelled» (отменено) or «Not completed» (не завершено). -
java.util.concurrent.locks.StampedLock:
новые методы
boolean isLockStamp (long)
,boolean isOptimisticReadStamp (long)
,boolean isReadLockStamp (long)
иboolean isWriteLockStamp (long)
. -
java.jar.JarEntry:
String getRealName ()
: возвращает настоящее Name этогоJarEntry
. ЕслиJarEntry
является записью мультирелизного jar-file, настроенного для обработки, тогда Name, возвращаемое этим методом — Name пути версии, которую представляетJarEntry
. ИначеJarEntry
возвращает то же Name, что иZipEntry.getName ()
. -
java.util.jar.JarFile:
Stream <JarEntry> versionedStream ()
: возвращает поток записей в файле с версией jar. Подобно методуgetRealName
дляJarEntry
, связан с мультирелизными jar-fileми. -
java.util.spi.LocaleNameProvider:
getDisplayUnicodeExtensionKey (String, Locale)
: возвращает локализованное Name для данногоUnicode extension key
.getDisplayUnicodeExtensionType (String, String, Locale)
: возвращает локализованное Name для данногоUnicode extension key
. -
java.util.stream.Collectors:
toUnmodifiableList ()
,toUnmodifiableSet ()
,toUnmodifiableMap (Function, Function)
,toUnmodifiableMap (Function, Function, BinaryOperator)
— эти четыре новых метода возвращают коллекторы (Collectors), которые накапливают входные элементы в соответствующую немодифицируемую коллекцию. -
java.lang.model.SourceVersion:
теперь это поле RELEASE_10 для представления версии JDK 10.
-
java.lang.model.util.TypeKindVisitor6 и javax.lang.model.util.TypeKindVisitor9:
что-то не вполне понятное:).
-
R visitNoTypeAsModule (NoType, P):
посещает псевдо-тип
MODULE
. -
javax.remote.management.rmi.RMIConnectorServer:
У этого класса было добавлено два поля:
CREDENTIALS_FILTER_PATTERN и SERIAL_FILTER_PATTERN
. -
javax.ButtonModel:
Представляете, Swing все еще обновляется!
-
ButtonGroup getGroup ():
возвращает группу, к которой принадлежит кнопка. Обычно используется с
radio buttons
, которые являются взаимоисключающими в своей группе. -
javax.plaf.basic.BasicMenuUI:
Dimension getMinimumSize (JComponent)
: возвращает минимальный размер указанного компонента, подходящий для внешнего вида.
What еще почитать? |
---|
GO TO FULL VERSION