Java biblioteka: kreiranje, obrada, rad sa fajlovima

Java je jedan od stubova svijeta otvorenog koda. Svaki od njegovih projekata koristi druge aplikacije otvorenog koda, ima ih dovoljno na mreži i korisnicima Ne trebaju "ponovno izmišljanje Točka". Ipak, često se dešava da programerima treba posebna Java biblioteka za funkcionalnost, a oni nemaju pojma kako da je kreiraju.

Ključni principi dizajna

Ponovna upotreba koda jedan je od svetih Grala računarskog programiranja. Za pisanje koda koji se lako može ponovo koristiti potrebne su složene vještine, ali, naravno, svako ga može savladati. Java jezik može pomoći u stvaranju dobre platforme za višekratnu upotrebu. Da bi to učinio, programer mora imati osnovno znanje programiranja, uključujući mogućnost kreiranja, kompajliranja i izvršavanja jednostavnih programa iz komandne linije.

Nekoliko ključnih principa

Nekoliko ključnih principa dobrog dizajna Java biblioteke:

  1. Trebalo bi jasno prenijeti svoju unutrašnju strukturu na takav način da korisnik zna kako ga koristiti, čak i ako ne razumije kako to funkcioniše iznutra.
  2. Inkapsulacija-zatezanje i usavršavanje interfejsa koda, što ga čini pouzdanijim i razumljivijim.
  3. Proširivost je stvaranje Java biblioteke koja dobro obavlja svoj zadatak i pruža mogućnost popunjavanja nedostajućih dijelova kako bi zadovoljila potrebe određenog programera.
  4. Nasljeđivanje-pruža način za prilagođavanje kod bez potrebe da znate sve detalje koda koji se konfiguriše.
  5. Pružanje načina da dobijete informacije o otklanjanju grešaka iz koda - pomaže korisnicima da pronađu sopstvene greške.

Granice funkcionalnosti: ulaz i izlaz

Problem je u tome što svi dizajneri Java biblioteka ne razmišljaju o svojim korisnicima, kako će se API primijeniti u praksi i kako će kôd izgledati i biti testiran.

Granice funkcionalnosti su možda najvažnija tema. Dobra je praksa proći sve zavisnosti kroz konstruktore i njihovu sažetost sa nekoliko parametara. Ako vam je potreban konstruktor sa više od tri ili četiri parametra, onda je jasno da kod treba reorganizovati.

Takođe, programeri uvek treba da ponude korisnicima više od jednog konstruktora. Klijenti treba da rade sa stringom i cijelim brojem tako da mogu proći ByteArrayInputStream prilikom testiranja modula.

Na primjer, više načina za kreiranje Github API ulazne tačke koristeći jcabi-github:

  • Github noauth= novi RtGithub();
  • Github basicauth = novi RtGithub("korisniäťko ime", "šifra");
  • Github OAuth = novi RtGithub("token").

Kao drugi primjer kako raditi s Charlesom, profesionalnom Java bibliotekom za web skeniranje, možete napisati sljedeće.

Skeniranje biblioteke

Podrazumevano, šablone ne treba zanemariti. Varijabla IndexPage je URL sa kojeg bi trebalo da počne puzanje sadržaja, drajver je pretraživač koji se koristi. Podrazumevano, ne može ništa da uradi, jer nije poznato koji pretraživač je instaliran na mašini koja radi. Rezultat je potreban uglavnom za Biblioteka koja komunicira sa vanjskim svijetom. Ovde morate odgovoriti na pitanje kako će se to obraditi.

Da biste to uradili, morate propisati nešto ovako:

Webcrawl graph = novi GraphCrawl(...); List pages = Graf.puzati();

Interfejs i treće strane

Programer uvek treba da koristi interfejse, a korisnik je dužan da komunicira sa kodom samo kroz stroge ugovore. Na primjer, u jcabi-github biblioteci, rtgithub si klasa je jedina koju vidi.

Interfejs i treće strane

Gornji fragment kreira aplikaciju u repozitorijumu eugenp/tutorials. Primjenjuju se instance Repo i izdavanja, ali stvarni tipovi se nikada ne otkrivaju. Gornji scenario se može riješiti, ali će tada razvijeni algoritam biti zagađen velikom količinom standardnog koda.

Interfejsi takođe pružaju lakoću širenja i kompatibilnost unazad. na jedna ruka programeri su dužni da se pridržavaju već izdatih ugovora, a s druge strane, korisnik proširuje predložene interfejse: može ih ukrasiti ili napisati alternativne implementacije.

Dobra biblioteka je lagana. Kod treba da reši problem i da bude funkcionalan. Ako vam treba puno zavisnosti. Vjerovatno programer pokušava pokriti previše funkcija i trebao bi podijeliti projekat na nekoliko malih.

Projekat treba da bude što transparentniji. Najbolji primjer je korištenje SLF4J sa API-jem za evidentiranje. Ne koristite log4j direktno, Programer će možda htjeti koristiti druge alate za evidentiranje.

Povezivanje Java biblioteka dokumenata koji prolazno prolaze kroz projekat vrši se tako da opasne zavisnosti kao što su xalan ili xml-API nisu uključene.

U svijetu postoje stotine hiljada biblioteka, ali programeri moraju znati samo mali broj najfunkcionalnijih modula.

Biblioteka Za Testiranje Jedinica

Biblioteka Za Testiranje Jedinica

Log moduli su veoma česti među programerima, potrebni su u svakom projektu. Posebno važno za serverske aplikacije, jer se logovi postavljaju samo tamo gdje možete vidjeti šta se u njima dešava. Uprkos činjenici da JDK dolazi sa vlastitom bibliotekom sječe, postoje bolje alternative, Na primjer, Log4j, SLF4j i LogBack. Java programer bi trebao biti upoznat sa prednostima i nedostacima biblioteka dnevnika i znati zašto je korištenje SLF4j bolje od jednostavnog Log4j.

U savremenom svetu web servisa i IoT-a, JSON je postao prelazni protokol za prenos informacija sa klijenta na server. Zamijenio je XML kao najpoželjniji način prijenosa informacija bez obzira na platformu. Nažalost, JDK nema JSON biblioteku. Ali ... postoji mnogo dobri moduli treće strane koji vam omogućavaju da analizirate i kreirate poruke, na primer, Džekson. Web programer bi trebao biti upoznat s barem jednom od ovih biblioteka.

Ispitivanje jedinica je najvažnija funkcija koja odvaja običnog programera od profesionalnog. Programerima se često oprašta što ne pišu jedinične testove i najčešći izgovor za ne obavljanje takvog testiranja je nedostatak iskustva i znanja o popularnim bibliotekama za testiranje jedinica, uključujući JUnit, Mockito i PowerMock.

Postoji nekoliko dobrih nezavisnih biblioteka opšte namene dostupnih Java programerima, kao što su Apache Commons i Google Guava. Oni pojednostavljuju mnoge zadatke. Kao što je Joshua Bloch ispravno rekao u efektivnoj Javi, nema smisla ponovo izmišljati točak, bolje je koristiti provjerene i testirane module umjesto pisanja vlastitih rutina. Za Java programera je korisno da se upozna sa Google Guavom i bibliotekom Apache Commons.

HTTP-omogućena platforma

Mnogi programeri ne vole nedostatak HTTP podrške u JDK-u. Možete uspostaviti HTTP vezu koristeći časove u Javi.net paket biblioteka nezavisnih proizvođača otvorenog koda, kao što su HttpClient i HttpCore.

Iako JDK 9 ima HTTP 2.0 podršku.i poboljšana HTTP podrška, stručnjaci preporučuju programerima da se upoznaju sa popularnim http klijentskim bibliotekama, uključujući HttpClient i HttpCore.

Postoje biblioteke za raščlanjivanje

Postoje biblioteke za raščlanjivanje XML-a, uključujući Xerces, JAXB, JAXP, Dom4j i Xstream. Xerces 2 je nova generacija XML analizatora visokih performansi u porodici Apache Xerces. Nova verzija Xerces-a predstavlja izvorni interfejs Xerces-a (XNI), pun platforma za kreiranje parserovih komponenti i konfiguracija koje su izuzetno modularne i jednostavne za programiranje.

Apache Xerces 2 analizator je referentna implementacija XNI, ali druge konfiguracijske komponente mogu se napisati pomoću izvornog Xerces interfejsa. Dom4j je još jedan fleksibilan XML okvir za kreiranje Java biblioteke.

Programi iz stvarnog svijeta moraju komunicirati s Microsoft Officeom u ovom ili onom obliku. Mnogi od njih treba da obezbede funkcionalnost za izvoz podataka u Excel, a ako to treba da se uradi iz Java aplikacije, Apache POI API će biti potreban. Ovo je veoma bogata biblioteka koja vam omogućava čitanje i pisanje XLS datoteka iz Java programa.

Ako programer napiše okvir koji generiše kod ili komunicira sa bajt kodovima, onda mu je potrebna biblioteka bajt kodova. Omogućuje vam čitanje i izmjenu bajt koda generiranog od strane aplikacije. Neki od popularnih bajtova biblioteke su javassist i Cglib Nodep. Java pomoćnik za programiranje čini manipulaciju bajtnim kodom vrlo jednostavnom. ASM je još jedan koristan modul za njegovo uređivanje.

Sveprisutni PDF format

Sveprisutni PDF format

Kao i Microsoft Excel, PDF biblioteke su još jedan sveprisutni format. Ako trebate podržati PDF funkcionalnost u aplikaciji, na primjer, za izvoz podataka u PDF datoteke, možete koristiti module iText i Apache FOP. Oba pružaju korisne funkcije vezane za PDF, ali iText je bolji.

Prije jave 8, JDK moduli za podatke i vrijeme imali su nedostatke jer nisu bili orijentisani na nit i bili su podložni greškama. Java programeri su se oslanjali na JodaTime za implementaciju uslova za datum i vrijeme. Nema razloga za korištenje Joda u JDK 8, jer korisnik dobiva ove funkcije u novom datumu i vremenu API, ali za staru verziju jave vrijedi istražiti ovu biblioteku.

Uprkos činjenici da JDK ima bogatu kolekciju, postoje moduli nezavisnih proizvođača koji pružaju više funkcija, kao što su kolekcije Apache Commons, Goldman Sachs, Google i Trove. Biblioteka je posebno korisna jer pruža brze redovne i primitivne kolekcije za Javu.

Javax.mail i Apache Commons Email pružaju API za slanje e-pošte sa Jave. Izgrađen je na vrhu JAVAMAIL API-ja, koji je dizajniran da pojednostavi posao.

Paket Kriptografskih Kodeka

Paket Kriptografskih Kodeka

Apache Commons sadrži jednostavan koder i dekodere za različite formate, kao što su Base64 i heksadecimalni. Pored ovih široko korištenih enkodera i dekodera, podržava skup uslužnih programa za fonetsko kodiranje. Ugrađene biblioteke SQL baza podataka kao što je H2, koje se mogu ugraditi u Java aplikaciju, odlične su za testiranje SQL skripti i pokretanje jediničnih testova kojima je potrebna baza podataka. Međutim, H2 nije jedina baza podataka, postoji i izbor Apache Derbyja i HSQL-a.

JDBC biblioteke za rješavanje problema dizajnirane su da olakšaju otklanjanje grešaka, Na primjer, P6spy. Ovo je modul koji vam omogućava da lako presretnete podatke baze podataka i registrujete ih bez promjene programskog koda. Možete ih koristiti za evidentiranje SQL upita i njihovog vremena. Na primjer, ako koristite PreparedStatment i CallableStatement u kodu, ove biblioteke mogu registrovati tačan poziv sa parametrima i sa definicijom vremena potrebno za implementacije.

Odbojnici Google Protokola su način za kodiranje strukturiranih podataka u efikasnom, ali proširivom formatu. To je bogatija i bolja alternativa Java serijalizaciji. Neke od korisnih mrežnih biblioteka su Netty i Apache MINA. Ako programer napiše program u kojem treba izvršiti mrežni zadatak niskog nivoa, tada koristi ove module.

Java JSON biblioteke

Postoje pouzdane JSON biblioteke za serijalizaciju / dezerializaciju. Detalje o Jacksonu možete pronaći u spremištu GitHub.

Java JSON biblioteke

Obezbedio ga je Doug Crockford i uveden je u platformu JavaEE 7 kao deo inicijative Java Specification Request (JSR) 353 i predstavlja samostalnu implementaciju koja se može integrisati sa SE, počevši od verzije 8.

, deveta modifikacija pruža vlastitu podršku za JSON kao dio inicijative za poboljšanje (JEP) 198.

Prednosti Jacksona:

  1. Široko se koristi, posebno u prolećnoj zajednici.
  2. Pruža odlične funkcije.
  3. Dobro funkcioniše dugo vremena.
  4. Dobro podržan sa aktivnom razvojnom zajednicom.
  5. Ima dobru dokumentaciju.
  6. Podržava fokus držeći se jedne Java / JSON biblioteke.

Ovdje su najvažnije Jackson klase i metode koje serijalizuju/deserialize u JSON:

  1. ObjectMapper-pretvara konstrukcije između Java i JSON.
  2. ObjectMapper.writeValue-pretvara Java tip podataka u JSON i u ovom slučaju izlazi u Writer.
  3. ObjectMapper.readValue-pretvara JSON u Java tip podataka.

Pokrenite test jedne jedinice iz komandne linije na sljedeći način:

cd poglavlje-4 / zvučnici-test

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

Ispitivanje jedne jedinice

Horstmann Edukativne Knjige

Horstmann Edukativne Knjige

Raznolikost biblioteka tjera programere da pronađu iscrpan, ali koncizan vodič za sve nove karakteristike Java SE 9. Horstmannove knjige im pomažu u tome deseto izdanje knjige" Java-professional Library " posebno je zanimljivo za korisnike početnike.

Kay S. Horstmann je profesor računarskih nauka Državni Univerzitet San Jose. On je iskusni profesionalni programer i konsultant za velike korporacije, univerziteta i organizacija na Java, C++, Windows i Internet programiranje. Horstmann je autor mnogih uspješnih profesionalnih i akademskih knjiga, uključujući "Big C ++", "C++ za svakoga", "Big Java", "Objektno orijentisani dizajn i predlošci".

Knjiga Cornella Horstmanna "Java Professional Library" pokriva sve važne aspekte jezika koje bi savremeni programer trebao znati, uključujući modularnost, kao i moćne lambda izraze predstavljene u 8. verziji. Oni opisuju osnove programiranja koristeći Javu u pristupačnijem i manje rigoroznom pristupu.

Knjiga pruža više user-friendly intenzivan grafički dizajn koji prenosi složene koncepte jednostavno i efikasno. Razlikuje se od ostalih knjiga na tržištu po tome što se fokusira na teme kao što su petlje i grafički interfejsi, a izbjegava orijentaciju objekta. Akcenat je na jednostavnim programima koji koriste unaprijed kreirane strukture podataka i algoritme.

Primjeri i studije slučaja razmatraju praktične aplikacije koje mogu biti korisne programerima, naučnicima i inženjerima, na primjer, obradu tabelarnih podataka, prikupljanje informacija na Internetu, Java grafičke biblioteke za kreiranje korisničkih grafičkih slika i interfejsa.

Načini za poboljšanje performansi biblioteke

Načini za poboljšanje performansi

Sa JSONOM je lako raditi i postao je standardni format podataka za gotovo sve. Stackify široko koristi JSON za REST API-je, serijalizaciju poruka u redu i još mnogo toga.

Neki opći savjeti za performanse JSON-a:

  1. Koristite više JSON biblioteka za optimalne performanse i karakteristike.
  2. Koristite tokove kad god je to moguće.
  3. Kompresuj prilagođeni JSON. Pošto je to samo tekst, možete računati na kompresiju do 90-a%. Stoga koriste " zip " gdje god je to moguće.
  4. Izbjegavajte analizu ako nije potrebno.
  5. Izvršite serijalizaciju / dezerializaciju velikih i manjih JSON objekata. U nekim slučajevima, kada je potrebno da se niz velikih objekata, ona je podijeljena u manje dijelove.
  6. Konfigurišite JSON Web API analizator.
  7. Ne serijalizirajte Sva polja, null vrijednosti ili zadane vrijednosti.
  8. Koristi kraća imena polja.
  9. Ručna serijalizacija ili raščlanjivanje mogu biti brži.

Aplikacije su zapravo obični računarski programi koji rade na mnogim uređajima iz stvarnog svijeta. Imaju posebnu mogućnost pristupa senzorima i kontroli hardvera. Da bi to učinili, proizvođači pružaju takozvane biblioteke programiranja koje čine hardver relativno lakim za korištenje u razvijenom programu.