Java knjižnica: stvaranje, obrada, rad s datotekama

Java je jedan od stupova svijeta otvorenog koda. Svaki od njegovih projekata koristi druge aplikacije otvorenog koda, one su dovoljne u mreži i korisnici ne moraju "reinventirati bicikl". Međutim, često se dešava da programeri trebaju posebnu Java biblioteku za funkcionalnost i nemaju pojma kako je kreirati.

Ključna načela dizajna

Ponovna uporaba koda je jedna od svetih grails računalnog programiranja. Pisanje koda koji se lako može ponovno koristiti zahtijeva složene vještine, ali, naravno, svatko ga može naučiti. Java jezik može pomoći u stvaranju dobre multi-platforme. Za to, programer mora imati osnovno znanje programiranja, uključujući mogućnost stvaranja, kompiliranja i izvršavanja jednostavnih programa iz naredbenog retka.


Nekoliko ključnih načela dobrog dizajna Java knjižnice:
  • Mora jasno prenijeti svoju unutarnju strukturu na takav način da korisnik zna kako je koristiti, čak i ako ne razumije kako to radi iznutra.
  • Inkapsulacija je krutost i profinjenost koda sučelja, što ga čini pouzdanijim i razumljivijim.
  • Ekstenzibilnost je stvaranje Java knjižnice koja dobro izvršava svoj zadatak i pruža mogućnost popunjavanja dijelova koji nedostaju kako bi se zadovoljile potrebe određenog programera.
  • Nasljeđivanje - Pruža način postavljanja koda bez poznavanja svih detalja koda kojije prilagodljiv
  • Pružanje načina za dobivanje informacija o otklanjanju pogrešaka iz koda - pomaže korisnicima da pronađu vlastite pogreške.
  • Funkcionalne granice: ulaz i izlaz

    Problem je u tome što nisu svi Java knjižničari razmišljali o svojim korisnicima, kako će se API primjenjivati ​​u praksi i kako izgleda i testirati kod.


    Granice funkcionalnosti su možda najvažnija tema. Dobra je praksa proći sve ovisnosti kroz konstruktore i njihovu konciznost s nekoliko parametara. Ako vam je potreban konstruktor s više od tri ili četiri parametra, onda je jasno da kod mora biti reorganiziran. Također, programeri bi uvijek trebali ponuditi više dizajnera korisnicima. Kupci bi trebali raditi sa String i Integer tako da mogu proći ByteArrayInputStream pri ocjenjivanju modula. Na primjer, nekoliko načina za stvaranje ulazne točke Github API-ja pomoću jcabi-github:
  • Github noauth = new RtGithub ();
  • Github basicauth = novi RtGithub ("korisničko ime", "lozinka");
  • Github oauth = novi RtGithub ("token").
  • Kao drugi primjer, kako raditi s charlesom, Java Professional Library za web indeksiranje, možete propisati sljedeće.
    Predlošci se ne smiju zanemariti. Varijabla indexPage je URL iz kojeg će sadržaj biti indeksiran, a upravljački program je preglednik koji se koristi. Po defaultu, to ne može učiniti ništa jer je nepoznat koji preglednik je instaliran na trčanje stroj. Izlaz je potreban uglavnom za knjižnicu koja komunicira s vanjskim svijetom. Ovdje trebate odgovoriti na pitanje kako će to bitiza obradu
    Da biste to učinili, morate propisati nešto ovako: WebCrawl graph = new GraphCrawl (), List pages = graph.crawl ();

    Sučelje i treće strane

    Programer mora uvijek koristiti sučelja, a korisnik je dužan komunicirati s kodom samo putem strogih ugovora. Na primjer, u knjižnici jcabi-github, klasa RtGithub si je jedina koju vidi.
    Gornji fragment stvara aplikaciju u spremištu eugenp /tutoriala. Primjenjuju se kopije repo izvještaja i pitanja, ali stvarni tipovi nikada se ne objavljuju. Gornji scenarij može se riješiti, ali tada će razvijeni algoritam biti kontaminiran velikim brojem standardnog koda. Sučelja također pružaju jednostavnost proširenja i kompatibilnost unatrag. S jedne strane, programeri su dužni pridržavati se već izdanih ugovora, as druge strane, korisnik proširuje predložena sučelja: može ih ukrasiti ili napisati alternativne implementacije. Dobra knjižnica je jednostavna. Kôd mora riješiti problem i biti funkcionalan. Ako trebate mnogo zavisnosti. Vjerojatno programer pokušava pokriti previše funkcija i mora razbiti projekt u nekoliko malih. Projekt bi trebao biti što transparentniji. Najbolji primjer je upotreba SLF4J s API-jem za prijavu. Ne bi trebali log4j izravno, možda će programer htjeti primijeniti druge alate za bilježenje. Povezivanje Java knjižnica s dokumentima koji prolaze kroz projekt transitively obavlja da opasne ovisnosti, kao što su xalan ili xml-apis, nisu uključene. Na svijetu postoji stotine tisuća ljudiprogrameri trebaju znati samo mali broj većine funkcionalnih modula.

    Knjižnica za testiranje modula

    Programeri imaju vrlo uobičajene module modula, koji su im potrebni u svakom projektu. Osobito je važno za poslužiteljske aplikacije, jer su časopisi smješteni samo tamo gdje možete vidjeti što se događa u njima. Unatoč činjenici da JDK dolazi s vlastitom bibliotekom dnevnika, postoje bolje alternative, kao što su Log4j, SLF4j i LogBack. Java programer bi trebao biti upoznat s prednostima i nedostacima knjižnica časopisa i znati zašto je korištenje SLF4j bolje od jednostavnog Log4j-a.
    U suvremenom svijetu internetskih usluga i interneta stvari, JSON je postao protokol za prijenos podataka s klijenta na poslužitelj. Zamijenio je XML kao najprikladniji način prijenosa informacija bez obzira na platformu. Nažalost, JDK nema knjižnicu JSON. No, postoji mnogo dobrih modula treće strane koji vam omogućuju analizu i stvaranje poruka, kao što je Jackson. Web developer treba biti upoznat s barem jednom od tih knjižnica. Modularno testiranje je najvažnija značajka koja odvaja redovitog developera od profesionalca. Programerima se često oprašta što ne pišu modularne testove, a najčešći razlog za nedostatak takvog testiranja je nedostatak iskustva i znanja popularnih knjižnica modularnih knjižnica, uključujući JUnit, Mockito i PowerMock.

    Postoji nekoliko dobrih knjižnica treće strane opće namjene, kao što su Apache Commons i Google Guava, dostupne Java programerima. Oni pojednostavljuju mnoge zadatke. Kako poštenoJoshua Blich je rekao "Efektivna Java", nema smisla izmišljati točak, bolje je koristiti dokazane i testirane module umjesto pisanja vlastitih potprograma. Java programer je koristan za upoznavanje s Google Guava i Apache Commons knjižnicom.

    Platforma s HTTP podrškom

    Mnogi programeri ne vole JDK nedostatak HTTP podrške. Možete instalirati HTTP vezu pomoću klase java.net trećih strana otvorenih izvornih knjižnica, kao što su Apache HttpClient i HttpCore. Iako JDK 9 ima podršku za HTTP 2.0 i poboljšanu HTTP podršku, stručnjaci preporučuju da se programeri upoznaju s popularnim knjižnicama HTTP klijenata, uključujući HttpClient i HttpCore.
    Postoje XML knjižnice za raščlanjivanje, uključujući Xerces, JAXB, JAXP, Dom4j i Xstream. Xerces2 je nova generacija visokih performansi, potpuno kompatibilnih XML analizatora u obitelji Apache Xerces. Nova verzija Xercesa predstavlja svoje vlastito Xerces sučelje (XNI), kompletnu platformu za stvaranje komponenti i konfiguracija parsera koji je iznimno modularan i jednostavan za programiranje. Apache Xerces2 parser je referentna implementacija XNI-a, ali druge konfiguracijske komponente mogu biti napisane pomoću vlastitog Xerces sučelja. Dom4j je još jedna fleksibilna XML struktura za stvaranje Java knjižnice.
    Programi iz stvarnog svijeta moraju komunicirati s Microsoft Officeom u jednom ili drugom obliku. Mnogi od njih trebali bi pružiti funkcionalnost za izvoz podataka u Excel, a ako to trebate učiniti iz Java aplikacije, trebate API Apache POI. Ovo je vrlo bogata biblioteka koja vam omogućuje čitanje inapišite XLS datoteke iz java programa. Ako programer napiše okvir koji generira kod ili stupa u interakciju s bajtnim kodom, tada mu treba biblioteka bajtnog koda. Omogućuje vam čitanje i izmjenu bajtnog koda koji generira program. Neki od popularnih knjižničnih bajtova su javassist i Cglib Nodep. Program Java Assistant Assistant čini manipulaciju bytecard vrlo jednostavnom. ASM je još jedan koristan modul za uređivanje.

    Rasprostranjen format PDF-a

    Poput Microsoft Excela, PDF knjižnice su još jedan uobičajeni format. Ako želite podržati funkcionalnost PDF-a u aplikaciji, na primjer, izvoziti podatke u PDF-ove, možete koristiti iText i Apache FOP module. Oba pružaju korisne funkcionalnosti povezane s PDF-om, ali iText je bolji. Do Jave 8, JDK moduli podataka i vremena imali su nedostatke jer nisu bili orijentirani prema trenutnom stanju i bili su podložni pogreškama. Java programeri su se oslanjali na JodaTime kako bi ispunili zahtjeve datuma i vremena. JDK 8 nema razloga koristiti Jodu jer korisnik prima te značajke u novom datumu i vremenu API-ja, ali za staru verziju Jave vrijedi istražiti ovu knjižnicu. Unatoč činjenici da JDK ima bogatu kolekciju, postoje moduli trećih strana koji pružaju više mogućnosti, kao što su Apache Commons, Goldman Sachs, Google i Treasure Collection. Knjižnica Treasure je posebno korisna jer pruža brze regularne i primitivne zbirke za Javu. Javax.mail i Apache Commons Email pružaju API-je za slanje e-pošte iz Jave. Izgrađen je na vrhu JavaMail API-ja koji je osmišljen kako bi pojednostavio rad.

    Kriptografski paket kodeka

    Apache Commons sadrži jednostavan koder idekodera za različite formate, kao što su Base64 i Hexadecimal. Osim ovih uobičajeno korištenih enkodera i dekodera, on podržava skup uslužnih programa za fonetsko kodiranje. Knjižnice ugrađenih SQL baza podataka, kao što je H2 koje se mogu ugraditi u Java aplikaciju, izvrsne su za testiranje SQL skripti i pokretanje modularnih testova koji zahtijevaju bazu podataka. Međutim, H2 nije jedina baza podataka, već je dostupna i za Apache Derby i HSQL. Knjižnice za rješavanje problema u JDBC-u osmišljene su tako da olakšaju otklanjanje pogrešaka, na primjer, P6spy. To je modul koji vam omogućuje jednostavno presretanje podataka baze podataka i registriranje bez promjene programskog koda. Možete ih koristiti za registriranje SQL upita i njihovo vrijeme. Na primjer, ako u kodu koristite PreparedStatment i CallableStatement, ove knjižnice mogu registrirati točan poziv s parametrima i vremenom potrebnim za izvršenje. Google Buffer je način za kodiranje strukturiranih podataka u učinkovitom, ali proširivom obliku. Ovo je bogatija i bolja alternativa Java serializaciji. Neke od korisnih mrežnih knjižnica su Netty i Apache MINA. Ako programer napiše program u kojem će obavljati zadatak niske razine mreže, tada koristi te module.

    Java Json knjižnice

    Postoje pouzdane JSON knjižnice za serijalizaciju /deserijalizaciju. Detalje o Jacksonu možete pronaći u repozitoriju GitHub.
    Dag Crockford dao je Doug Crockford i uveden je u JavaEE 7 platformu kao dio Java Specification Request 353 inicijative (JSR) i autonomna je implementacija koja se može integrirati sa SE počevši s verzijom 8. Deveta modifikacija pruža vlastitu podršku za JSON. unutar okviraPrijedlog poboljšanja inicijativa (JEP) 198. Prednosti Jackson-a:
  • Široko je korišten, posebno od strane proljetne zajednice.
  • Pruža izvrsnu funkcionalnost.
  • Dobro radi dugo vremena.
  • Dobro podržana od strane aktivne zajednice razvoja.
  • ​​
  • Ima dobru dokumentaciju.
  • Podržava fokus slijedeći jednu Java /JSON knjižnicu.
  • Ovdje su najvažnije Jacksonove klase i metode koje serijski /deserijaliziraju u JSON:
  • ObjectMapper - Konstruira Javu i JSON.
  • ObjectMapper.writeValue - Konvertira Java podatkovni tip u JSON i u ovom slučaju izlaze iz Writer-a.
  • ObjectMapper.readValue - Pretvara JSON u Java podatkovni tip.
  • Pokrenite test jedne jedinice iz naredbenog retka na sljedeći način: cd chapter-4 /speakers-test + test gradle - testovi org.jsonatwork.ch4.BasicJsonTypesTest +

    Horstmannove knjige

    Raznolikost knjižnica prisiljava programere na pronalaženje iscrpnog, ali kratkog vodiča za sve funkcije Java SE 9. To je ono što oni pomažu s Horstmannovom knjigom, posebno zanimljivom za početnike u desetom izdanju knjige "Java Professional Library". Kay S. Horstmann je profesor informatike na Državnom sveučilištu u San Joseu. On je iskusan profesionalni programer i konzultant za velike korporacije, sveučilišta i organizacije iz programa Java, C ++, Windows i Internet. Horstmann je autor mnogih uspješnih stručnih i akademskih knjiga, uključujući Big C ++, C ++ za sve, Big Java, objektno orijentirani dizajn i predloške. Cornell Horstmann "Java Professional Library" pokriva sve važne aspekte.jezike koje moderni programer mora znati, uključujući modularnost, kao i snažne lambda izraze koji su prikazani u verziji 8. Oni opisuju osnove programiranja pomoću Jave u pristupačnijem i manje strogom pristupu. Knjiga pruža ugodniji intenzivni grafički dizajn koji jednostavno i učinkovito prenose složene koncepte. Razlikuje se od ostalih knjiga na tržištu fokusirajući se na teme kao što su petlje i grafička sučelja, izbjegavajući pritom orijentaciju prema objektnoj orijentaciji. Naglasak je na jednostavnim programima koji koriste već postojeće strukture podataka i algoritme. Primjeri i studije slučaja razmatraju praktične primjene koje mogu biti korisne programerima, znanstvenicima i inženjerima, na primjer, obrada tabličnih podataka, prikupljanje informacija na Internetu, Java grafičke knjižnice za kreiranje grafičkih slika i sučelja.

    Načini poboljšanja produktivnosti knjižnice

    JSON je jednostavan za rad i postao je standardni format podataka za gotovo sve. Stackify je široko korišten od strane JSON za REST API-je, serijaliziranje poruka s čekanjem i još mnogo toga. Neki uobičajeni JSON savjeti za produktivnost:
  • Koristite više JSON knjižnica za optimalnu izvedbu i značajke.
  • Kad god je to moguće, koristite struje.
  • Komprimirajte prilagođeni JSON. Budući da je to samo tekst, možete računati na kompresiju do 90%. Stoga koristite "zip" gdje god je to moguće.
  • Izbjegavajte analizu, ako to nije potrebno.
  • Izvršiteserijalizacija /deserizacija velikih i manjih JSON objekata. U nekim slučajevima, kada trebate dobiti niz velikih objekata, on se razbija na manje komade.
  • Konfigurirajte JSON Web API analizator.
  • Nemojte serijalizirati sva polja, null vrijednosti ili zadane vrijednosti.
  • Koristite kraća imena polja.
  • Ručno serijaliziranje ili parsiranje mogu biti brži.
  • Dodaci su zapravo standardni računalni programi koji se izvode na mnogim uređajima u stvarnom svijetu. Oni imaju poseban pristup senzorima i kontrolama hardvera. Za to, proizvođači nude takozvane programske knjižnice koje omogućuju relativno jednostavan za korištenje hardvera u programu.

    Povezane publikacije