prominent java 8 features with code examples
Izčrpen seznam in razlaga vseh pomembnejših funkcij, predstavljenih v izdaji Java 8 s primeri:
Izdanje Java 8 iz podjetja Oracle je bilo revolucionarno izdanje prve svetovne razvojne platforme. Vključeval je ogromno nadgradnjo programskega modela Java kot celote, skupaj z razvojem JVM, jezika Java in knjižnic na usklajen način.
Ta izdaja je vsebovala več funkcij za enostavnost uporabe, produktivnost, izboljšano programiranje poliglotov, varnost in splošno izboljšano delovanje.
Kaj se boste naučili:
- Funkcije, dodane izdaji Java 8
- Funkcionalni vmesniki in lambda izrazi
- metoda forEach () v uporabljivem vmesniku
- Izbirni razred
- Privzete in statične metode v vmesnikih
- Reference metode
- Java Stream API za množične podatkovne operacije na zbirkah
- Java Date Time API
- Nosilec nosorogov JavaScript
- Dekodiranje kodiranja Base64
- Izboljšave zbirnega API-ja
- Spremembe / izboljšave API-ja za sočasnost
- Izboljšave Java IO
- Različne izboljšave jedra API-ja
- Zaključek
Funkcije, dodane izdaji Java 8
Med pomembnejšimi spremembami so naslednje pomembne funkcije, ki so bile dodane tej izdaji.
- Funkcionalni vmesniki in Lambda izrazi
- metoda forEach () v vmesniku Iterable
- Neobvezni tečaj,
- privzete in statične metode v vmesnikih
- Referenca metode
- Java Stream API za množične podatkovne operacije na zbirkah
- Java Date Time API
- Izboljšave zbirnega API-ja
- Izboljšave API-ja za sočasnost
- Izboljšave Java IO
- Nosilec nosorogov JavaScript
- Dekodiranje kodiranja Base64
- Različne izboljšave jedra API-ja
V tej vadnici bomo na kratko razpravljali o vsaki od teh funkcij in poskusili razložiti vsako s pomočjo preprostih in enostavnih primerov.
Funkcionalni vmesniki in lambda izrazi
Java 8 uvede pripis, znan kot @FunctionalInterface, ki je običajno namenjen napakam na ravni prevajalnika. Običajno se uporablja, kadar vmesnik, ki ga uporabljate, krši pogodbe o funkcionalnem vmesniku.
Funkcionalni vmesnik lahko pokličete tudi kot vmesnik SAM ali vmesnik Single Abstract Method. Funkcionalni vmesnik omogoča natančno eno 'abstraktno metodo' kot svojega člana.
Spodaj je naveden primer funkcionalnega vmesnika:
@FunctionalInterface public interface MyFirstFunctionalInterface { public void firstWork(); }Pripis lahko izpustite, @FunctionalInterface in vaš funkcionalni vmesnik bo še vedno veljaven. Ta pripis uporabljamo samo za obveščanje prevajalnika, da bo imel vmesnik eno samo abstraktno metodo.
Opomba: Po definiciji so privzete metode abstraktne in v funkcijski vmesnik lahko dodate poljubno število privzetih metod.
Drugič, če ima vmesnik abstraktno metodo, ki preglasi eno od javnih metod »java.lang.object«, potem ne velja za abstraktno metodo vmesnika.
Spodaj je veljaven primer funkcionalnega vmesnika.
@FunctionalInterface public interface FunctionalInterface_one { public void firstInt_method(); @Override public String toString(); //Overridden from Object class @Override public boolean equals(Object obj); //Overridden from Object class } Lambda izraz (ali funkcijo) lahko definiramo kot anonimno funkcijo (funkcijo brez imena in identifikatorja). Lambda izrazi so natančno določeni tam, kjer so potrebni, ponavadi kot parameter neke druge funkcije.
Z druge perspektive Lambda izrazi izražajo primere Funkcionalni vmesniki (opisano zgoraj). Lambda Expressions izvajajo edino abstraktno funkcijo, ki je prisotna v funkcionalnem vmesniku, in tako izvajajo funkcionalne vmesnike.
Osnovna sintaksa Lambda izraza je:
java vs c ++, kar je boljše

Osnovni primer Lambda Expression je:

Zgornji izraz ima dva parametra x in y in vrne vsoto x + y. Na podlagi podatkovnega tipa x in y je mogoče metodo večkrat uporabiti na različnih mestih. Tako se bosta parametra x in y ujemala z int ali Integer in nizom, na podlagi konteksta pa bo dodala dve celi števili (kadar so parametri int) ali združila dva niza (kadar sta parametra niz).
Izvedimo program, ki prikazuje Lambda izraze.
interface MyInterface { void abstract_func(int x,int y); default void default_Fun() { System.out.println('This is default method'); } } class Main { public static void main(String args()) { //lambda expression MyInterface fobj = (int x, int y)->System.out.println(x+y); System.out.print('The result = '); fobj.abstract_func(5,5); fobj.default_Fun(); } } Izhod:

Zgornji program prikazuje uporabo Lambda Expression za dodajanje parametrov in prikazuje njihovo vsoto. Nato to uporabimo za izvedbo abstraktne metode “abstract_fun”, ki smo jo navedli v definiciji vmesnika. Rezultat klica funkcije »abstract_fun« je vsota dveh celih števil, ki sta bili med klicanjem funkcije predani kot parametra.
Več o Lambda Expressions bomo izvedeli kasneje v vadnici.
metoda forEach () v uporabljivem vmesniku
Java 8 je v vmesnik java.lang.Iterable uvedel metodo »forEach«, ki lahko prehaja nad elementi v zbirki. 'ForEach' je privzeta metoda, definirana v vmesniku Iterable. Uporabljajo ga razredi Collection, ki razširjajo vmesnik Iterable na ponavljanje elementov.
Metoda 'forEach' jemlje funkcijski vmesnik kot en parameter, tj. Kot argument lahko posredujete Lambda Expression.
Primer metode forEach ().
importjava.util.ArrayList; importjava.util.List; public class Main { public static void main(String() args) { List subList = new ArrayList(); subList.add('Maths'); subList.add('English'); subList.add('French'); subList.add('Sanskrit'); subList.add('Abacus'); System.out.println('------------Subject List--------------'); subList.forEach(sub -> System.out.println(sub)); } } Izhod:

Torej imamo zbirko predmetov, tj. SubList. Vsebino podlistka prikažemo z uporabo metode forEach, pri kateri je Lambda Expression natisnjen vsak element.
Izbirni razred
Java 8 je v paketu 'java.util' predstavil izbirni razred. 'Neobvezno' je javni končni razred in se uporablja za obravnavo NullPointerException v aplikaciji Java. Z možnostjo Izbirno lahko določite nadomestno kodo ali vrednosti za zagon. Če uporabljate Izbirno, vam ni treba uporabljati preveč ničelnih preverjanj, da se izognete nullPointerException.
Razred Neobvezno lahko uporabite, da se izognete nenavadni ukinitvi programa in preprečite zrušitev programa. Razred Neobvezno ponuja metode, ki se uporabljajo za preverjanje prisotnosti vrednosti za določeno spremenljivko.
Naslednji program prikazuje uporabo razreda Neobvezno.
import java.util.Optional; public class Main{ public static void main(String() args) { String() str = new String(10); OptionalcheckNull = Optional.ofNullable(str(5)); if (checkNull.isPresent()) { String word = str(5).toLowerCase(); System.out.print(str); } else System.out.println('string is null'); } } Izhod:

V tem programu z lastnostjo “ofNullable” izbirnega razreda preverimo, ali je niz ničen. Če je, se uporabniku natisne ustrezno sporočilo.
Privzete in statične metode v vmesnikih
V Javi 8 lahko v vmesnik dodate metode, ki niso abstraktne, torej lahko imate vmesnike z izvedbo metode. Ključno besedo Privzeto in Statično lahko uporabite za ustvarjanje vmesnikov z izvajanjem metode. Privzete metode v glavnem omogočajo funkcionalnost Lambda Expression.
Z uporabo privzetih metod lahko vmesnikom v knjižnicah dodate novo funkcionalnost. To bo zagotovilo, da je koda, napisana za starejše različice, združljiva s temi vmesniki (binarna združljivost).
Razumejmo privzeto metodo s primerom:
import java.util.Optional; interface interface_default { default void default_method(){ System.out.println('I am default method of interface'); } } class derived_class implements interface_default{ } class Main{ public static void main(String() args){ derived_class obj1 = new derived_class(); obj1.default_method(); } }Izhod:

Imamo vmesnik z imenom »interface_default« z metodo default_method () s privzeto izvedbo. Nato definiramo razred 'deriva_class', ki izvaja vmesnik 'interface_default'.
Upoštevajte, da v tem razredu nismo izvedli nobene metode vmesnika. Nato v glavni funkciji ustvarimo objekt razreda »deriva_class« in neposredno pokličemo »default_method« vmesnika, ne da bi ga bilo treba določiti v razredu.
To je uporaba privzetih in statičnih metod v vmesniku. Če pa želi razred prilagoditi privzeto metodo, lahko s preglasitvijo metode zagotovite lastno izvedbo.
Reference metode
Referenčna funkcija metode, uvedena v Javi 8, je okrajšava zapisa Lambda Expressions za klicanje metode funkcijskega vmesnika. Torej, vsakič, ko uporabite Lambda Expression za sklicevanje na metodo, lahko Lambda Expression zamenjate s sklicem na metodo.
Primer referenčne metode.
import java.util.Optional; interface interface_default { void display(); } class derived_class{ public void classMethod(){ System.out.println('Derived class Method'); } } class Main{ public static void main(String() args){ derived_class obj1 = new derived_class(); interface_default ref = obj1::classMethod; ref.display(); } }Izhod:

V tem programu imamo vmesnik “interface_default” z abstraktno metodo “display ()”. Nato je razred 'deriva_class', ki ima javno metodo 'classMethod', ki natisne sporočilo.
V glavni funkciji imamo objekt za razred, nato pa imamo sklic na vmesnik, ki se sklicuje na metodo razreda 'classMethod' prek obj1 (objekt razreda). Zdaj, ko prikaz abstraktne metode pokliče referenca vmesnika, se prikaže vsebina classMethod.
Java Stream API za množične podatkovne operacije na zbirkah
Stream API je še ena večja sprememba, uvedena v Javi 8. Stream API se uporablja za obdelavo zbirke predmetov in podpira drugačno ponovitev. Tok je zaporedje predmetov (elementov), ki vam omogoča pripravo različnih metod za doseganje želenih rezultatov.
Tok ni podatkovna struktura in prispevek dobi iz zbirk, nizov ali drugih kanalov. Različne vmesne operacije lahko pripravimo s pomočjo tokov, operacije terminala pa vrnejo rezultat. O API-ju za tok bomo podrobneje razpravljali v ločeni vadnici Java.
Java Date Time API
Java 8 v paketu java.time predstavlja nov API za datum in čas.
Najpomembnejši razredi med njimi so:
kaj je dobro brezplačno pc čistilo
- Lokalno: Poenostavljeni datumsko-časovni API brez zapletenosti upravljanja s časovnim pasom.
- Območno: Specializiran API za datum in čas za obravnavo različnih časovnih pasov.
Datumi
Datumski razred je v Java 8 zastarel.
Sledijo predstavljeni novi razredi:
- Razred LocalDate določa datum. Nima predstavitve za čas ali časovni pas.
- LocalTime razred določa čas. Nima predstavitve za datum ali časovni pas.
- Razred LocalDateTime določa datum in čas. Nima predstavitve časovnega pasu.
Če želite vključiti podatke o časovnem pasu s funkcijo datuma, lahko uporabite Lambda, ki ponuja 3 razrede, tj. OffsetDate, OffsetTime in OffsetDateTime. Tu je odmik časovnega pasu predstavljen z drugim razredom - 'ZoneId'. To temo bomo podrobneje obdelali v kasnejših delih te serije Java.
Nosilec nosorogov JavaScript
Java 8 je predstavil precej izboljšan motor za JavaScript, tj. Nashorn, ki nadomešča obstoječega Rhino. Nashorn neposredno prevede kodo v pomnilnik in nato posreduje bajt kodo JVM, s čimer izboljša zmogljivost za 10-krat.
Nashorn predstavlja novo orodje ukazne vrstice - jjs, ki na konzoli izvaja kodo JavaScript.
Ustvarimo datoteko JavaScript 'sample.js', ki vsebuje naslednjo kodo.
print (‘Hello, World!!’);V konzolo podajte naslednji ukaz:
C: Java jjs sample.js
Izhod: Pozdravljen, svet!!
Programe JavaScript lahko poganjamo tudi v interaktivnem načinu in jim tudi argumentiramo.
Dekodiranje kodiranja Base64
V Javi 8 je vgrajeno kodiranje in dekodiranje za kodiranje Base64. Razred za kodiranje Base64 je java.util.Base64.
Ta razred ponuja tri kodiranja in dekodirnike Base64:
- Osnovno: Pri tem se izhod preslika na nabor znakov med A-Za-z0-9 + /. Dajalnik k izhodu ne doda nobenega podajalnika in dekodirnik zavrne kateri koli znak, razen zgoraj.
- URL: Tu je rezultat URL in varno ime datoteke se preslika na nabor znakov med A-Za-z0-9 + /.
- MIME: Pri tej vrsti kodirnika se izhod preslika v MIME prijazno obliko.
Izboljšave zbirnega API-ja
Java 8 je v API za zbirke dodal naslednje nove metode:
- forEachRemaining (Potrošnikovo dejanje): To je privzeta metoda in je za Iterator. Izvede 'dejanje' za vsakega od preostalih elementov, dokler niso vsi elementi obdelani ali 'dejanje' vrže izjemo.
- Privzeta metoda za zbirko removeIf (filter predikatov): S tem se odstranijo vsi elementi v zbirki, ki izpolnjujejo dani 'filter'.
- Spliterator (): To je metoda zbiranja in vrne primerek spliteratorja, ki ga lahko uporabite za prehod po elementih bodisi zaporedno ali vzporedno.
- Zbirka zemljevidov ima metode replaceAll (), compute () in merge ().
- Razred HashMap s ključnimi trki je bil izboljšan za izboljšanje zmogljivosti.
Spremembe / izboljšave API-ja za sočasnost
Sledijo pomembne izboljšave v sočasnem API-ju:
- ConcurrentHashMap je izboljšan z naslednjimi metodami:
- izračun (),
- za vsakogar (),
- forEachEntry (),
- forEachKey (),
- forEachValue (),
- go (),
- zmanjšanje () in
- Iskanje ()
- Metoda “newWorkStealingPool ()” za izvršitelje ustvari področje niti za krajo dela. Za ciljno raven vzporednosti uporablja razpoložljive procesorje.
- Metoda »completableFuture« je tista, ki jo lahko izrecno dopolnimo (z nastavitvijo njene vrednosti in stanja).
Izboljšave Java IO
Izboljšave IO, opravljene v Javi 8, vključujejo:
- Files.list (dir poti): To vrne jlazily naseljen tok, katerega vsak element je vnos v imenik.
- Files.lines (Pot poti): Prebere vse vrstice iz toka.
- Files.find (): Poiščite datoteke v drevesu datotek, ki je zakoreninjeno v dani začetni datoteki, in vrne tok, naseljen s potjo.
- BufferedReader.lines (): Vrne tok z vsemi elementi kot vrstice, prebrane iz BufferedReader.
Različne izboljšave jedra API-ja
Imamo naslednje izboljšave API-jev:
- Statična metoda withInitial (dobavitelj dobavitelja) ThreadLocal za enostavno ustvarjanje primerka.
- Vmesnik »Primerjalnik« je razširjen s privzetimi in statičnimi metodami za naravno urejanje obratnega vrstnega reda itd.
- Razredi celih, dolgih in dvojnih ovojnic imajo metode min (), max () in sum ().
- Logični razred je izboljšan z metodami logicAnd (), logicOr () in logicXor ().
- V razredu matematike je predstavljenih več uporabnih metod.
- Most JDBC-ODBC je odstranjen.
- Prostor za pomnilnik PermGen je odstranjen.
Zaključek
V tej vadnici smo razpravljali o glavnih funkcijah, ki so bile dodane izdaji Java 8. Ker je Java 8 glavna izdaja iz Jave, je pomembno, da poznate vse funkcije in izboljšave, ki so bile izvedene v tej izdaji.
Čeprav je najnovejša različica Java 13, je vseeno dobro, da se seznanite s funkcijami Java 8. Vse funkcije, obravnavane v tej vadnici, so še vedno prisotne v najnovejši različici Jave, kasneje v tej seriji pa jih bomo obravnavali kot posamezne teme.
Upamo, da vam je ta vadnica pomagala spoznati različne funkcije Java 8 !!
Priporočeno branje
- Vadnica za dolžino polja Java s primeri kode
- Java 'this' ključna beseda: Vadnica s primeri kode
- Vadnica Java vmesnika in abstraktnega razreda s primeri
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic
- Uvajanje Java: Ustvarjanje in izvajanje datoteke Java JAR
- C ++ Vs Java: Top 30 razlik med C ++ in Java s primeri
- Metoda sortiranja () MongoDB () s primeri
- Raziščite osnove Jave v selenu s primeri