Knjižnica java: ustvarjanje, obdelava, delo z datotekami

Java je eden od stebrov odprtokodnega sveta. Vsak projekt, ki ga izvaja, uporablja druge odprtokodne aplikacije, ki jih je v omrežju dovolj, zato uporabnikom ni treba "na novo izumiti kolo". Vendar se pogosto zgodi, da razvijalci potrebujejo določeno knjižnico Jave za delovanje in nimajo pojma, kako jo ustvariti.

Ključna načela oblikovanja

Ponovna uporaba kode je eden od svetih gralov računalniškega programiranja. Pisanje kode, ki jo je mogoče zlahka ponovno uporabiti, zahteva zapletene spretnosti, vendar jih lahko obvlada vsakdo. Jezik Java lahko pomaga ustvariti dobro platformo za večkratno uporabo. Razvijalec mora imeti osnovno znanje o programiranju, vključno s sposobnostjo ustvarjanja, sestavljanja in izvajanja preprostih programov iz ukazne vrstice.

Nekaj ključnih načel

Nekaj ključnih načel dobrega načrtovanja knjižnic Java:

  1. Jasno mora sporočati svojo notranjo strukturo tako, da jo uporabnik zna uporabljati, tudi če ne razume njenega notranjega delovanja.
  2. Zapuščanje - poostritev in izpopolnitev vmesnika kode, da postane bolj robustna in razumljiva.
  3. Razširljivost - ustvarjanje knjižnice Java, ki dobro opravlja svoje delo in omogoča dopolnitev manjkajočih delov za potrebe posameznega razvijalca.
  4. Dedovanje - zagotavlja način nastavitve kodo, ne da bi bilo treba poznati vse podrobnosti nastavljene kode.
  5. Zagotavljanje načina za pridobivanje informacij o odpravljanju napak iz kode - uporabnikom pomaga pri iskanju lastnih napak.

Meje funkcionalnosti: znotraj in zunaj

Težava je v tem, da vsi oblikovalci knjižnic Java ne razmišljajo o svojih uporabnikih, o tem, kako se bo API uporabljal v praksi ter kako bo koda videti in kako se bo testirala.

Meje funkcionalnosti - to je verjetno najpomembnejša tema. Dobra praksa je, da vse odvisnosti posredujemo prek konstruktorjev in da so ti kratki, z nekaj parametri. Če je potreben konstruktor z več kot tremi ali štirimi parametri, je jasno, da je treba kodo preoblikovati.

Razvijalci morajo uporabnikom vedno ponuditi več kot en konstruktor. Odjemalci morajo delati z String in Integer, da lahko posredujejo ByteArrayInputStream pri testiranju modulov.

Na primer , na več načinov ); za ustvarjanje prijavne točke API Github z uporabo jcabi-github:

  • Github noauth = new RtGithub();
  • Github basicauth = new RtGithub("uporabniško ime", "geslo");
  • Github oauth = new RtGithub("žeton").

Kot drugi primer dela s charlesom, knjižnico Java za spletno skeniranje, lahko predpišete naslednje.

Skeniranje knjižnice

Predloge se privzeto ne smejo prezreti. Spremenljivka indexPage je naslov URL, po katerem naj bi se vsebina začela premikati, gonilnik pa je uporabljeni brskalnik. Privzeto ne more storiti ničesar, ker ni znano, kateri brskalnik je nameščen v zagnanem računalniku. Izhod je potreben na predvsem za Knjižnica, ki komunicira z zunanjim svetom. Vprašanje, na katerega je treba odgovoriti, je, kako se bo ravnalo.

Da bi to dosegli, je treba zapisati nekaj takega:

WebCrawl graph = novi GraphCrawl(...);Seznam strani = graf.plazenje(;)

Vmesnik in tretje osebe

Razvijalec mora vedno uporabljati vmesnike, uporabnik pa mora s kodo komunicirati le prek strogih pogodb. Na primer, v knjižnici jcabi-github je razred RtGithub si edini, ki vidi.

Vmesniki in tretje osebe

Zgornji delček ustvari aplikacijo v skladišču eugenp/tutorials. Uporabljajo se primeri repo in izdaje, vendar dejanske vrste niso nikoli razkrite. Zgornji scenarij bi bil lahko dovoljen, vendar bi bil potem razviti algoritem onesnažen z veliko standardne kode.

Vmesniki omogočajo tudi enostavno razširljivost in združljivost za nazaj. С v eno smer Razvijalci so dolžni spoštovati že izdane pogodbe, po drugi strani pa uporabnik razširja ponujene vmesnike: lahko jih polepša ali napiše alternativne izvedbe.

Dobra knjižnica je lahka knjižnica. Koda mora reševati težavo in biti funkcionalna. Če potrebujete veliko odvisnosti. Razvijalec verjetno poskuša zajeti preveč funkcij in bi moral projekt razdeliti na več manjših.

Projekt mora biti čim bolj pregleden. Najboljši primer je uporaba SLF4J z API za beleženje. Ne uporabljajte neposredno log4j, razvijalec bo morda želel uporabiti druga orodja za beleženje.

povezovanje knjižnic dokumentov Java, ki prehajajo skozi projekt, na prehoden način, tako da nevarne odvisnosti, kot sta xalan ali xml-apis, niso vključene.

Na svetu je več sto tisoč knjižnic, vendar morajo programerji poznati le nekaj najbolj funkcionalnih modulov.

Knjižnica za testiranje enot

Modularna knjižnica za testiranje

Razvijalci imajo zelo pogoste module za beleženje, ki so potrebni v vsakem projektu. To je še posebej pomembno za strežniške aplikacije, saj so dnevniki nameščeni le tam, kjer lahko vidite, kaj se v njih dogaja. Čeprav je JDK opremljen z lastno knjižnico za beleženje, obstajajo boljše alternative, kot so Log4j, SLF4j in LogBack. Razvijalec Jave mora poznati prednosti in slabosti knjižnic dnevnikov in vedeti, zakaj je uporaba SLF4j boljša od uporabe navadnega Log4j.

V današnjem svetu spleta in interneta stvari je JSON postal prehodni protokol za prenos informacij od odjemalca do strežnika. Zamenjal je XML kot najprimernejši način prenosa informacij ne glede na platformo. Na žalost JDK nima knjižnice JSON. Toda je veliko dobri moduli tretjih oseb, ki omogočajo analizo in ustvarjanje sporočil, npr. Jackson. Spletni razvijalec mora poznati vsaj eno od teh knjižnic.

Testiranje enot je najpomembnejša značilnost, ki povprečnega razvijalca loči od profesionalca. Programerjem je pogosto odpuščeno, da ne pišejo testov enote, in najpogostejše izgovor za pomanjkanje takšnega testiranja je pomanjkanje izkušenj in znanja o priljubljenih knjižnicah za testiranje enot, kot so JUnit, Mockito in PowerMock.

Razvijalcem Jave je na voljo več dobrih splošnih knjižnic tretjih oseb, kot sta Apache Commons in Google Guava. Poenostavljajo številna opravila. Kot je Joshua Bloch pravilno povedal v knjigi "Učinkovita Java", nima smisla na novo izumljati kolesa, temveč je bolje uporabiti preizkušene in preverjene module namesto pisanja lastnih podprogramov. Razvijalec Jave bi se moral seznaniti z Googlovo Guavo in knjižnico Apache Commons.

Platforma s podporo HTTP

Veliko razvijalcev ne mara pomanjkanja podpore HTTP v JDK. Povezavo HTTP je mogoče vzpostaviti z uporabo razredov v javi.Paket odprtokodnih knjižnic tretjih oseb, kot so Apache HttpClient in HttpCore.

Čeprav JDK 9 podpira HTTP 2.0 in izboljšano podporo HTTP, strokovnjaki priporočajo, da se razvijalci seznanijo s priljubljenimi knjižnicami odjemalcev HTTP, vključno s HttpClient in HttpCore.

Na voljo so knjižnice za razčlenjevanje

Na voljo so knjižnice za razčlenjevanje XML, vključno z Xercesom, JAXB, JAXP, Dom4j in Xstream. Xerces2 je nova generacija visoko zmogljivih in popolnoma združljivih razčlenjevalnikov XML v družini Apache Xerces. Nova različica programa Xerces uvaja lasten vmesnik Xerces (XNI), popolni platforma za za ustvarjanje komponent in konfiguracij analizatorjev, ki so izjemno modularni in enostavni za programiranje.

Parser Apache Xerces2 je referenčna implementacija XNI, vendar lahko druge konfiguracijske komponente napišete z uporabo izvornega vmesnika Xerces. Dom4j, še eno prilagodljivo ogrodje XML za ustvarjanje javanskega.

Programi iz resničnega sveta morajo tako ali drugače sodelovati z Microsoft Office. Številne od njih morajo zagotavljati funkcionalnost za izvoz podatkov v program Excel, in če želite to storiti iz aplikacije Java, potrebujete API Apache POI. To je zelo bogata knjižnica, ki omogoča branje in pisanje datotek XLS iz programa Java.

Če programer napiše ogrodje, ki ustvarja kodo ali komunicira z bajtkodo, potrebuje knjižnico bajtkode. Omogoča branje in spreminjanje bajtne kode, ki jo ustvari aplikacija. Nekatere priljubljene knjižnice so javassist in Cglib Nodep. Pomočnik za programiranje Java zelo poenostavi manipulacijo z bajtno kodo. ASM je še en uporaben modul za urejanje.

Povsod razširjen format PDF

vseprisotni format PDF

Knjižnice PDF so tako kot Microsoft Excel še en razširjen format. Če je treba v aplikaciji podpirati funkcionalnost PDF, na primer izvoz podatkov v datoteke PDF, je mogoče uporabiti iText in Apache FOP. Oba zagotavljata uporabne funkcije, povezane s PDF, vendar je iText boljši.

Pred Javo 8 so bili podatkovni in časovni moduli JDK pomanjkljivi, ker niso bili usmerjeni v niti in so se v njih pojavljale napake. Razvijalci Jave so se pri implementaciji zahtev glede datuma in časa zanašali na JodaTime. V JDK 8 ni razloga za uporabo sistema Joda, saj uporabnik te funkcije dobi v novem API za datum in čas, vendar je za starejše različice Jave vredno raziskati to knjižnico.

Čeprav je zbirka JDK bogata, obstajajo moduli tretjih oseb, ki zagotavljajo več funkcij, kot so zbirke Apache Commons, Goldman Sachs, Google in Trove. Knjižnica Trove je še posebej uporabna, ker zagotavlja hitre regularne in primitivne zbirke za Javo.

Javax.mail in Apache Commons Email zagotavljata API za pošiljanje e-pošte iz Jave. Zgrajen je na podlagi vmesnika JavaMail API, ki je zasnovan za poenostavitev dela.

Paket kriptografskih kodekov

Paket kriptografskih kodekov

Apache Commons vsebuje preprost kodirnik in dekoder za različne formate, kot sta Base64 in heksadecimalno. Poleg teh pogosto uporabljenih kodirnikov in dekodirnikov podpira tudi niz pripomočkov za fonetično kodiranje. Vgrajene knjižnice podatkovnih zbirk SQL, kot je H2, ki jih je mogoče vgraditi v aplikacijo Java, so odlične za testiranje skript SQL in izvajanje testov enot, ki potrebujejo podatkovno zbirko. Vendar H2 ni edina podatkovna zbirka, na voljo sta tudi Apache Derby in HSQL.

Knjižnice za odpravljanje težav JDBC so zasnovane za lažje odpravljanje napak, npr. P6spy. To je modul, ki vam omogoča enostavno prestrezanje podatkov iz zbirke podatkov in njihovo beleženje brez spreminjanja programske kode. Z njimi lahko registrirate poizvedbe SQL in njihov časovni potek. Če se na primer v kodi uporabljata knjižnici PreparedStatment in CallableStatement, lahko ti knjižnici registrirata natančen klic s parametri in časom potrebno za izvajanje.

Googlov protokolni predpomnilnik je način kodiranja strukturiranih podatkov v učinkovito, a razširljivo obliko. To je bogatejša in boljša alternativa serializaciji v Javi. Nekatere uporabne knjižnice za omrežje so Netty in Apache MINA. Če razvijalec napiše program, v katerem je treba opraviti nizkonivojsko omrežno nalogo, uporabi te module.

Knjižnice Java Json

Obstajajo robustne knjižnice JSON za serializacijo/deserializacijo. Podrobnosti o programu Jackson najdete v skladišču GitHub.

Knjižnice Java Json

Zagotovil jo je Doug Crockford in je bila uvedena v platformo JavaEE 7 kot del pobude Java Specification Request (JSR) 353. Gre za samostojno implementacijo, ki jo je mogoče vključiti v SE od različice 8.

Deveta sprememba zagotavlja izvirno podporo za JSON kot del pobude za predlog za izboljšavo (JEP) 198.

Prednosti družbe Jackson:

  1. Široka uporaba, zlasti v pomladanski skupnosti.
  2. Zagotavlja odlično funkcionalnost.
  3. Deluje dobro in dolgo časa.
  4. Dobra podpora z aktivno razvojno skupnostjo.
  5. ima dobro dokumentacijo.
  6. Ohranja osredotočenost z eno knjižnico Java/JSON.

Tukaj so najpomembnejši Jacksonovi razredi in metode, ki serializirajo/deserializirajo v JSON:

  1. ObjectMapper - pretvori konstrukcije med Javo in JSON.
  2. ObjectMapper.writeValue - pretvori podatkovni tip Java v JSON in nato izpiše v Writer.
  3. ObjectMapper.readValue - pretvori JSON v podatkovno vrsto Java.

Iz ukazne vrstice zaženite en test enote, kot sledi

cd chapter-4/speakers-test

+gradle test --tests org.jsonatwork.ch4.BasicJsonTypesTest+

Posamezen test enote

Horstmannove knjige za usposabljanje

Horstmannove knjige za usposabljanje

Raznolikost knjižnic sili programerje, da poiščejo izčrpen, a jedrnat vodnik po vseh novih funkcijah Java SE 9. Pri tem jim pomagajo Horstmannove knjige, ki so še posebej zanimive začetniki za uporabnike Deseta izdaja knjige The Professional`s Java Library.

C. Horstmann je profesor računalništva državna univerza San Jose. Je izkušen profesionalni programer in svetovalec za velike korporacije, univerze in organizacije na področju programiranja v jezikih Java, C++, Windows in Internet. Horstmann je avtor številnih uspešnih strokovnih in znanstvenih knjig, med drugim "Big C ++", "C ++ za vse", "Velika Java", "Objektno usmerjeno oblikovanje in predloge".

Knjiga Cornella Horstmanna The Java Professional`s Library zajema vse pomembne vidike jezika, ki jih mora poznati sodobni razvijalec, vključno z modularnostjo in zmogljivimi lambda izrazi, uvedenimi v različici 8. Osnove programiranja z Javo so opisane na bolj dostopen in manj strog način.

Knjiga zagotavlja uporabniku prijaznejšo, grafično intenzivno zasnovo, ki sporoča zapletene koncepte preprosto in učinkovito. Od drugih knjig na trgu se razlikuje po tem, da se osredotoča na teme, kot so zanke in grafični vmesniki, pri čemer se izogiba objektni usmerjenosti. Poudarek je na preprostih programih, ki uporabljajo vnaprej pripravljene podatkovne strukture in algoritme.

Študije primerov in primeri zajemajo praktične aplikacije, ki bodo programerjem, znanstvenikom in inženirjem koristile, kot so tabelarna obdelava podatkov, zbiranje informacij iz interneta, grafične knjižnice Java za ustvarjanje grafike in vmesnikov po meri.

Načini za izboljšanje učinkovitosti

Načini za izboljšanje učinkovitosti

JSON je enostaven za delo in je postal standardni podatkovni format za skoraj vse. Stackify pogosto uporablja JSON za API REST, serializacijo sporočil v čakalnih vrstah in še veliko več.

Nekaj splošnih nasvetov o zmogljivosti JSON:

  1. Uporaba več knjižnic JSON za optimalno zmogljivost in funkcije.
  2. Uporaba potokov, kadar koli je to mogoče.
  3. Stiskanje JSON po meri. Ker gre samo za besedilo, lahko pričakujete do 90-odstotno stiskanje. Zato uporabite "zip", kjer je to mogoče.
  4. Izogibajte se analizi, če ni potrebna.
  5. izvajanje serializacije/deserializacije večjih in manjših objektov JSON. V nekaterih primerih, ko je treba pridobiti polje velikih predmetov, ga razdelimo na manjše dele.
  6. Konfiguracija razhroščevalnika JSON Web API.
  7. Ne serializirajte vseh polj, ničelnih vrednosti ali privzetih vrednosti.
  8. Uporabite krajša imena polj.
  9. Ročna serializacija ali razčlenjevanje je lahko hitrejše.

Aplikacije so v resnici običajni računalniški programi, ki se izvajajo v številnih napravah v resničnem svetu. imajo poseben dostop do senzorjev in nadzora strojne opreme. V ta namen proizvajalci zagotavljajo tako imenovane programske knjižnice, ki omogočajo razmeroma enostavno uporabo strojne opreme v razvitem programu.

Članki na tem področju