Knižnica Java: vytváranie, spracovanie, práca so súbormi

Java je jedným z pilierov sveta otvoreného zdroja. Každý z jeho projektov využíva iné aplikácie s otvoreným zdrojovým kódom, v sieti postačuje a používatelia nemusia "vynalezať bicykel". Často sa však stáva, že vývojári potrebujú špeciálnu Java knižnicu pre funkčnosť a nemajú potuchy, ako ich vytvoriť.

Kľúčové princípy dizajnu

Opätovné použitie kódu je jedným z posvätných šarží počítačového programovania. Písanie kódu, ktoré sa dá ľahko znova použiť, si vyžaduje zložité zručnosti, ale samozrejme sa ho každý môže naučiť. Jazyk Java môže pomôcť vytvoriť dobrú multiplatformnú platformu. Na to musí mať vývojár základné znalosti o programovaní, vrátane schopnosti vytvárať, kompilovať a vykonávať jednoduché programy z príkazového riadku.


Niekoľko kľúčových zásad dobrého návrhu knižnice Java:
  • Musí jasne vyjadriť svoju vnútornú štruktúru takým spôsobom, že používateľ vie, ako ju používať, aj keď nechápe, ako to funguje zvnútra.
  • Zapuzdrenie je rigidita a zdokonalenie kódu rozhrania, čo zvyšuje spoľahlivosť a zrozumiteľnosť.
  • Rozšíriteľnosť je vytvorenie knižnice Java, ktorá plní svoju úlohu dobre a poskytuje možnosť vyplniť chýbajúce časti tak, aby vyhovovali potrebám konkrétneho vývojára.
  • Dedičstvo - poskytuje spôsob, ako nastaviť kód bez toho, aby ste museli poznať všetky podrobnosti kódu, ktorýje prispôsobiteľná
  • Poskytovanie spôsobu, ako získať informácie o ladení z kódu - pomáha používateľom nájsť svoje vlastné chyby. Funkčné hranice: vstup a výstup
    Problémom je, že nie všetci návrhári knižníc jazyka Java uvažujú o svojich používateľoch, o tom, ako sa API bude aplikovať v praxi a ako kód vyzerá a testuje.


    Hranice funkčnosti sú možno najdôležitejšou témou. Dobrou praxou je preniesť všetky závislostí prostredníctvom konštruktérov a ich zhrnutie s niekoľkými parametrami. Ak potrebujete konštruktora s viac ako tromi alebo štyrmi parametrami, potom je jasné, že kód musí byť reorganizovaný. Tiež by vývojári mali vždy ponúknuť používateľom viac ako jedného dizajnéra. Zákazníci by mali pracovať so String a Integer, aby pri vyhodnocovaní modulov mohli prejsť ByteArrayInputStream. Napríklad niekoľko spôsobov, ako vytvoriť vstupný bod Github API pomocou jcabi-github:
  • Github noauth = nový RtGithub ();
  • Github basicauth = nový RtGithub ("používateľské meno", "heslo");
  • Github oauth = nový RtGithub ("token").
  • Ako druhý príklad, ako pracovať s charlesom, Java Professional Library for web crawling, môžete predpísať nasledujúce.
    Štandardne by sa šablóny nemali ignorovať. Premenná indexPage je adresa URL, z ktorej sa má obsah indexovo prehľadávať a ovládač je použitý prehliadač. V predvolenom nastavení nemôže nič robiť, pretože nie je známe, ktorý prehliadač je nainštalovaný na bežiacom počítači. Výstup je potrebný najmä pre knižnicu, ktorá komunikuje s okolitým svetom. Tu musíte odpovedať na otázku, ako to budena spracovanie
    Aby ste to urobili, musíte predpísať niečo takéto: WebCrawl graph = new GraphCrawl (); List pages = graph.crawl ();

    Rozhranie a tretie strany

    Vývojár musí vždy používať rozhrania a používateľ je povinný komunikovať s kódom len prostredníctvom prísnych zmlúv. Napríklad v knižnici jcabi-github je trieda RtGithub si jediná, ktorú vidí.
    Vyššie uvedený fragment vytvára aplikáciu v repozitári eugenp /tutorials. Kópie repo a emisie sa uplatňujú, ale skutočné typy sa nikdy neuverejnia. Vyššie uvedený scenár možno vyriešiť, ale vyvinutý algoritmus bude kontaminovaný veľkým počtom štandardných kódov. Rozhrania tiež umožňujú jednoduché rozšírenie a spätnú kompatibilitu. Na jednej strane sú vývojári povinní dodržiavať už vydané zmluvy a na druhej strane používateľ rozširuje navrhované rozhrania: môže ich zdobiť alebo napísať alternatívne implementácie. Dobrá knižnica je jednoduchá. Kód musí vyriešiť problém a byť funkčný. Ak potrebujete veľa závislostí. Pravdepodobne sa vývojár snaží pokryť príliš veľa funkcií a musí rozdeliť projekt na niekoľko malých. Projekt by mal byť čo najtransparentnejší. Najlepším príkladom je použitie protokolu SLF4J s protokolovým rozhraním API. Nemali by ste log4j priamo, možno vývojár bude chcieť použiť iné nástroje pre zaznamenávanie. Pripojenie knižníc Java k dokumentom, ktoré prechádzajú projektom, prechodne vykonáva, že nebezpečné závislosti, ako xalan alebo xml-apis, nie sú zahrnuté. Na svete sú stovky tisícknižnice, ale programátori potrebujú vedieť len malý počet väčšiny funkčných modulov.

    Knižnica testov modulov

    Vývojári majú veľmi bežné logovacie moduly, ktoré potrebujú v každom projekte. Zvlášť dôležité pre serverové aplikácie, pretože časopisy sú umiestnené iba tam, kde môžete vidieť, čo sa v nich deje. Napriek skutočnosti, že JDK prichádza s vlastnou žurnálovou knižnicou, existujú lepšie alternatívy, ako napríklad Log4j, SLF4j a LogBack. Vývojár v jazyku Java by mal byť oboznámený s výhodami a nevýhodami knižníc časopisov a vedieť, prečo používanie SLF4j je lepšie ako jednoduché Log4j.
    V modernom svete webových služieb a internetu sa JSON stal prenosovým protokolom pre prenos informácií z klienta na server. Nahradil XML ako najvhodnejší spôsob prenosu informácií bez ohľadu na platformu. Žiaľ, JDK nemá knižnicu JSON. Existuje však mnoho dobrých modulov tretích strán, ktoré vám umožňujú analyzovať a vytvárať správy, ako napríklad Jackson. Webový vývojár by mal byť oboznámený s aspoň jednou z týchto knižníc. Modulárne testovanie je najdôležitejším prvkom, ktorý oddeľuje bežného vývojára od profesionála. Programátorom sa často odpúšťa zlyhanie pri písaní modulárnych testov a najčastejším dôvodom nedostatku takéhoto testovania je nedostatok skúseností a poznatkov o populárnych modulárnych knihovníckych knižniciach vrátane JUnit, Mockito a PowerMock.
    Existuje niekoľko dobrých knižníc tretích strán všeobecného záujmu, ako Apache Commons a Google Guava, k dispozícii vývojárom jazyka Java. Zjednodušujú množstvo úloh. Ako spravodlivéJoshua Blich povedal: "Efektívna Java", nemá zmysel objavovať koleso, je lepšie použiť osvedčené a testované moduly namiesto písania vlastných podprogramov. Vývojár Java je užitočný pre zoznámenie sa s Google Guava a knižnicou Apache Commons.

    Platforma s podporou protokolu HTTP

    Mnohí vývojári nemajú radi nedostatok podpory protokolu HTTP pre JDK. Môžete nainštalovať pripojenie HTTP pomocou triedy java.net knižníc open source tretích strán, ako napríklad Apache HttpClient a HttpCore. Hoci JDK 9 má podporu HTTP 2.0 a vylepšenú podporu protokolu HTTP, odborníci odporúčajú, aby sa vývojári oboznámili s populárnymi knižnicami HTTP klientov, vrátane HttpClient a HttpCore.
    Existujú knižnice na analýzu XML, vrátane Xerces, JAXB, JAXP, Dom4j a Xstream. Xerces2 je nová generácia vysoko výkonných, plne kompatibilných analyzátorov XML v rodine Apache Xerces. Nová verzia Xerces predstavuje vlastné rozhranie Xerces (XNI), kompletnú platformu na vytváranie komponentov a konfigurácií analyzátora, ktorý je mimoriadne modulárny a je ľahko programovateľný. Analyzátor Apache Xerces2 je referenčnou implementáciou XNI, ale ďalšie konfiguračné komponenty je možné napísať pomocou vlastného rozhrania Xerces. Dom4j je ďalšia flexibilná štruktúra XML na vytváranie knižnice Java.
    Programy reálneho sveta musia komunikovať s Microsoft Office v jednom alebo druhom formáte. Mnohé z nich by mali poskytovať funkcie na export dát do programu Excel a ak to potrebujete z Java aplikácie, potrebujete Apache API API. Jedná sa o veľmi bohatú knižnicu, ktorá vám umožňuje čítať apísať súbory XLS z java programu. Ak programátor zapíše rámček, ktorý generuje kód alebo interaguje s bytekódom, potom potrebuje knižnicu bytecode. To vám umožní čítať a upravovať bytecode generované programom. Niektoré populárne knižné byty sú javasisti a Cglib Nodep. Pomocník pre programovanie v jazyku Java umožňuje jednoduchú manipuláciu pomocou bytera. ASM je ďalším užitočným modulom na jeho úpravu.

    Rozsiahly formát PDF

    Rovnako ako Microsoft Excel sú knižnice PDF ďalším bežným formátom. Ak chcete podporovať funkciu PDF v aplikácii, napríklad exportovať údaje do súborov PDF, môžete použiť moduly iText a Apache FOP. Oba poskytujú užitočné funkcie týkajúce sa PDF, ale iText je lepšie. Do javy 8, dátové a časové moduly JDK mali nevýhody, pretože neboli aktuálne orientované a podliehali chybám. Java vývojári sa spoliehali na JodaTime, aby splnili požiadavky dátumu a času. JDK 8 nemá dôvod používať službu Joda, pretože používateľ dostane tieto funkcie v novom dátume a čase API, ale pre starú verziu jazyka Java je vhodné preskúmať túto knižnicu. Napriek tomu, že JDK má bohatú kolekciu, existujú moduly tretích strán, ktoré poskytujú viac funkcií, ako Apache Commons, Goldman Sachs, Google a Treasure Collection. Knižnica Treasure je obzvlášť užitočná, pretože poskytuje vysokorýchlostné pravidelné a primitívne zbierky pre jazyk Java. Aplikácie Javax.mail a Apache Commons poskytujú rozhrania API na odosielanie e-mailov z Java. Je postavený na rozhraní JavaMail API, ktorý je navrhnutý tak, aby zjednodušil prácu.

    Kryptografický balík kodekov

    Apache Commons obsahuje jednoduchý kódovač adekodéry pre rôzne formáty, ako Base64 a Hexadecimal. Okrem týchto bežne používaných kodéry a dekodérov podporuje fonetický kódovanie nástroje. Knižnice vstavané databázy SQL, napríklad H2, ktoré môžu byť zakotvené v jazyku Java aplikácie, ideálny pre testovanie SQL skripty a spustiť jednotkové testy, ktoré vyžadujú databázu. H2 však nie je jedinou databázou, ale je k dispozícii aj pre Apache Derby a HSQL. JDBC Riešenie problémov Knižnice sú navrhnuté tak, aby uľahčovali ladenie, napríklad P6spy. Jedná sa o modul, ktorý vám umožňuje ľahko zachytiť údaje databázy a zaregistrovať ich bez zmeny programového kódu. Môžete ich použiť na registráciu dotazov SQL a ich čas. Napríklad, ak PreparedStatment a CallableStatement používa v kóde, ktoré možno zaznamenať presný volanie knižnice s parametrami a načasovanie potrebných k výkonu. Google Buffer je spôsob, ako kódovať štruktúrované údaje v efektívnom, ale rozbaliteľnom formáte. Toto je bohatšia a lepšia alternatíva k serializácii Java. Niektoré z užitočných sieťových knižníc sú Netty a Apache MINA. Ak vývojár zapíše program, v ktorom má vykonať sieťovú úlohu na nízkej úrovni, potom použije tieto moduly.

    Java knižnica json

    je robustný knižnica pre JSON serializácie /deserializatsiyi. Podrobnosti o spoločnosti Jackson nájdete v úložisku GitHub.
    To za predpokladu, Doug Krokfordom a bol predstavený v JavaEE plošine 7 v rámci iniciatívy 353 "špecifikácia Žiadosť Java» (JSR) je autonómny a implementácia, ktoré môžu byť integrované s SE, od verzie 8. Deviaty modifikácie poskytuje vlastné podporu JSON v tomto rámciNávrh na vylepšenie iniciatív (JEP) 198. Výhody Jacksonovho:
  • Široko používané najmä v jarnej komunite.
  • Poskytuje vynikajúcu funkčnosť.
  • Pracuje dlho dobre.
  • Dobre podporovaná aktívnou komunitou rozvoja.
  • Má dobrú dokumentáciu.
  • Podporuje zaostrenie sledovaním jednej knižnice Java /JSON.
  • Tu sú najdôležitejšie triedy Jackson a metódy, ktoré serializujú /deserialize v JSON:
  • ObjectMapper - Constructs Java a JSON.
  • ObjectMapper.writeValue - Konvertuje typ údajov Java na JSON a v tomto prípade výstupy od Writer.
  • ObjectMapper.readValue - Konvertuje JSON na dátový typ Java.
  • Zavedenie jednej skúšobnej modul z príkazového riadka takto: CD kapitola-4 /reproduktory-test + grádl skúšobné --tests org.jsonatwork.ch4.BasicJsonTypesTest +

    Učebnice Horstmann

    Rozmanitosť softvérové ​​knižnice činí hľadaní celkového ale stručné vodítko ku všetkým funkciám Java SE 9. v tejto knihe, pomáhajú Horstmann zvlášť zaujímavé začínajúcich užívateľov desiate vydanie knihy «Java knižnica profesionálne." Kay S. Horstmann je profesorom informatiky na Štátnej univerzite v San Jose. Je to skúsený profesionálny programátor a konzultant pre veľké korporácie, vysokých škôl a organizácií z Java, C ++, Windows a Internet programovanie. Horstmann je autorom mnohých úspešných odborných a akademických kníh, vrátane "Big C ++", "C ++ pre všetkých", "Big Jáva", "objektovo orientovaného dizajnu a vzory." Knižnica Java Professional Cornell Horstmann pokrýva všetky dôležité aspekty.jazyky, ktoré musí moderný vývojár poznať vrátane modularity, ako aj výrazné výrazy lambda, ktoré sú uvedené vo verzii 8. Načrtávajú základy programovania pomocou Java v dostupnejšom a menej prísnom prístupe. Kniha poskytuje pohodlnejší a intenzívnejší grafický dizajn, ktorý jednoducho a efektívne prenáša komplexné koncepty. Odlišuje sa od ostatných kníh na trhu tým, že sa zameriava na témy, ako sú slučky a grafické rozhrania, pričom sa vyhýba orientácii na objektovú orientáciu. Dôraz sa kladie na jednoduché programy, ktoré využívajú už existujúce dátové štruktúry a algoritmy. Príklady a prípadové štúdie uvažujú o praktických aplikáciách, ktoré môžu byť užitočné pre programátorov, vedcov a inžinierov, napríklad spracovanie tabuľkových dát, zber informácií na internete, grafické knižnice Java na vytváranie grafických obrázkov a rozhraní.

    Spôsoby zlepšovania produktivity knižnice

    JSON je ľahké pracovať a stal sa štandardným dátovým formátom pre prakticky všetko. Stackify je široko používaný JSON pre API REST, serializáciu správ vo fronte a ďalšie. Niektoré bežné rady o produkte JSON:
  • Používajte viacero knižníc JSON pre optimálny výkon a funkcie.
  • Používajte prúdy vždy, keď je to možné.
  • Komprimujte vlastný JSON. Keďže ide len o text, môžete počítať s kompresiou až o 90%. Preto používajte "zips" vždy, keď je to možné.
  • Vyhnite sa analýze, ak sa nevyžaduje.
  • Vykonajteserializácia /deserializácia veľkých a menších objektov JSON. V niektorých prípadoch, keď potrebujete získať veľké množstvo objektov, rozdeľte ich na menšie kúsky.
  • Konfigurácia analyzátora JSON Web API.
  • Neserializujte všetky polia, nulové hodnoty alebo predvolené hodnoty.
  • Použite kratšie názvy polí.
  • Manuálna serializácia alebo analýza môže byť rýchlejšia.
  • Doplnky sú v skutočnosti štandardné počítačové programy bežiace na mnohých zariadeniach v reálnom svete. Majú špeciálny prístup k senzorom a ovládacím prvkom hardvéru. Na to výrobcovia poskytujú tzv. Programovacie knižnice, ktoré umožňujú v programe pomerne jednoduché používanie hardvéru.

    Súvisiace publikácie