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

Java je jedným z pilierov sveta s otvoreným zdrojovým kódom. Každý z jeho projektov využíva iné aplikácie s otvoreným zdrojovým kódom, v sieti je ich dosť a používatelia ich nepotrebujú "znovu objaviť koleso". Napriek tomu sa často stáva, že vývojári potrebujú pre funkčnosť špeciálnu knižnicu Java a netušia, ako ju vytvoriť.

Kľúčové princípy návrhu

Opätovné použitie kódu je jedným zo svätých Grálov 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 ho zvládne každý. Jazyk Java môže pomôcť vytvoriť dobrú opakovane použiteľnú platformu. Na to musí mať vývojár základné znalosti programovania vrátane schopnosti vytvárať, kompilovať a spúšťať jednoduché programy z príkazového riadku.

Niekoľko kľúčových princípov

Niekoľko kľúčových princípov dobrého dizajnu knižnice Java:

  1. Mal by jasne vyjadrovať svoju vnútornú štruktúru takým spôsobom, aby používateľ vedel, ako ju používať, aj keď nechápe, ako to funguje zvnútra.
  2. Zapuzdrenie-sprísnenie a zdokonalenie kódového rozhrania, čo ho robí spoľahlivejším a zrozumiteľnejším.
  3. rozšíriteľnosti je vytvorenie knižnice Java, ktorá dobre plní svoju úlohu a poskytuje príležitosť na vyplnenie chýbajúcich častí, aby vyhovovala potrebám konkrétneho vývojára.
  4. Dedičstvo-poskytuje spôsob prispôsobenia kód bez toho, aby ste museli poznať všetky podrobnosti kódu, ktorý sa konfiguruje.
  5. Poskytuje spôsob, ako získať informácie o ladení z kódu - pomáha používateľom nájsť svoje vlastné chyby.

Hranice funkčnosti: vstup a výstup

Problém je v tom, že nie všetci dizajnéri knižníc Java premýšľajú o svojich používateľoch, o tom, ako sa bude API aplikovať v praxi a ako bude Kód vyzerať a testovať.

Hranice funkčnosti sú možno najdôležitejšou témou. Je dobrou praxou preniesť všetky závislosti cez konštruktérov a ich stručnosť s niekoľkými parametrami. Ak potrebujete konštruktor s viac ako tromi alebo štyrmi parametrami, je zrejmé, že kód je potrebné reorganizovať.

Vývojári by tiež mali používateľom vždy ponúknuť viac ako jedného konštruktora. Klienti by mali pracovať s reťazcom a celým číslom, aby mohli pri testovaní modulov prejsť ByteArrayInputStream.

Napríklad, , niekoľko spôsobov vytvorenie vstupného bodu rozhrania Github API pomocou jcabi-github:

  • Github noauth = nový RtGithub();
  • Github basicauth = nový RtGithub("používateľské", "heslo");
  • Github OAuth = nový RtGithub("token").

Ako druhý príklad toho, ako pracovať s Charlesom, profesionálnou knižnicou Java na skenovanie webu, môžete napísať nasledovné.

Skenovanie knižnice

V predvolenom nastavení by sa šablóny nemali ignorovať. Premenná IndexPage je adresa URL, z ktorej by sa malo začať prehľadávanie obsahu, 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ý hlavne pre Knižnica, ktorá komunikuje s vonkajším svetom. Tu musíte odpovedať na otázku, ako sa bude spracovávať.

Ak to chcete urobiť, musíte predpísať niečo také:

WebCrawl graph = nový GraphCrawl(...); Zoznam stránok = Graf.indexovo();

Rozhranie a tretie strany

Vývojár by mal vždy používať rozhrania a používateľ je povinný komunikovať s kódom iba prostredníctvom prísnych zmlúv. Napríklad v knižnici jcabi-github je trieda RtGithub si jediná, ktorú vidí.

Rozhranie a tretie strany

Vyššie uvedený fragment vytvorí aplikáciu v úložisku eugenp / tutorials. Použijú sa inštancie Repo a emisie, ale skutočné typy sa nikdy nezverejnia. Vyššie uvedený scenár je možné vyriešiť, ale potom bude vyvinutý algoritmus znečistený veľkým množstvom štandardného kódu.

Rozhrania tiež poskytujú ľahkú expanziu a spätnú kompatibilitu. na stránke jednou rukou vývojári sú povinní dodržiavať už vydané zmluvy a na druhej strane používateľ rozširuje navrhované rozhrania: môže ich ozdobiť alebo napísať alternatívne implementácie.

Dobrá knižnica je ľahká. Kód by mal problém vyriešiť a byť funkčný. Ak potrebujete veľa závislostí. Pravdepodobne sa vývojár snaží pokryť príliš veľa funkcií a mal by rozdeliť projekt na niekoľko malých.

Projekt by mal byť čo najtransparentnejší. Najlepším príkladom je použitie SLF4J s protokolovacím API. Nepoužívajte log4j priamo, vývojár môže chcieť použiť iné nástroje na zaznamenávanie.

Pripojenie knižníc Java dokumentov, ktoré prechádzajú projektom prechodne, sa vykonáva tak, aby neboli zahrnuté nebezpečné závislosti, ako napríklad Xalan alebo XML-API.

Na svete existujú státisíce knižníc, ale programátori musia poznať iba malý počet najfunkčnejších modulov.

Knižnica Na Testovanie Jednotiek

Knižnica Na Testovanie Jednotiek

Moduly denníka sú medzi vývojármi veľmi bežné, sú potrebné v každom projekte. Obzvlášť dôležité pre serverové aplikácie, pretože protokoly sú umiestnené iba tam, kde môžete vidieť, čo sa v nich deje. Napriek tomu, že JDK prichádza s vlastnou knižnicou protokolovania, existujú lepšie alternatívy, napríklad Log4j, SLF4j a LogBack. Vývojár Java by mal byť oboznámený s výhodami a nevýhodami knižníc protokolov a vedieť, prečo je používanie SLF4j lepšie ako jednoduché Log4j.

V modernom svete webových služieb a internetu vecí sa JSON stal prechodovým protokolom na prenos informácií z klienta na server. Nahradil XML ako najvýhodnejší spôsob prenosu informácií bez ohľadu na platformu. Bohužiaľ, JDK nemá knižnicu JSON. Ale je ich veľa dobré moduly tretích strán, ktoré vám umožňujú analyzovať a vytvárať správy, napríklad Jackson. Webový vývojár by mal poznať aspoň jednu z týchto knižníc.

Testovanie jednotiek je najdôležitejšou funkciou, ktorá oddeľuje bežného vývojára od profesionála. Programátorom sa často odpúšťa, že nepíšu jednotkové testy a najčastejšie otázky ospravedlnením za nevykonanie takéhoto testovania je nedostatok skúseností a znalostí populárnych knižníc na testovanie jednotiek vrátane JUnit, Mockito a PowerMock.

Vývojári Java majú k dispozícii niekoľko dobrých univerzálnych knižníc tretích strán, ako napríklad Apache Commons a Google Guava. Zjednodušujú veľa úloh. Ako správne povedal Joshua Bloch v efektívnej Jave, nemá zmysel znovu objavovať koleso, namiesto písania vlastných rutín je lepšie používať osvedčené a testované moduly. Pre vývojára Java je užitočné oboznámiť sa s Google Guava a Apache Commons library.

Platforma s podporou HTTP

Mnohým vývojárom sa nepáči nedostatok podpory HTTP v JDK. Pripojenie HTTP môžete vytvoriť pomocou tried v jazyku java.čistý balík open source knižníc tretích strán, ako napríklad Apache HttpClient a HttpCore.

Hoci JDK 9 implementuje podporu HTTP 2.0.a vylepšená podpora HTTP, odborníci odporúčajú vývojárom, aby sa oboznámili s populárnymi knižnicami klientov HTTP, vrátane HttpClient a HttpCore.

Existujú parsovacie knižnice

Existujú knižnice na analýzu XML vrátane Xerces, JAXB, JAXP, Dom4j a Xstream. Xerces 2 je nová generácia vysoko výkonných, plne kompatibilných XML analyzátorov z rodiny Apache Xerces. Nová verzia Xerces predstavuje natívne rozhranie Xerces (XNI), plné platforma pre vytváranie komponentov a konfigurácií analyzátora, ktoré sú mimoriadne modulárne a ľahko programovateľné.

Analyzátor Apache Xerces 2 je referenčnou implementáciou XNI, ale ďalšie konfiguračné komponenty je možné zapísať pomocou natívneho rozhrania Xerces. Dom4j je ďalší flexibilný rámec XML na vytváranie knižnice Java.

Programy v reálnom svete musia interagovať s balíkom Microsoft Office v tej či onej podobe. Mnohé z nich by mali poskytovať funkcie na export údajov do programu Excel, a ak je to potrebné z aplikácie Java, bude potrebné API Apache POI. Toto je veľmi bohatá knižnica, ktorá vám umožňuje čítať a zapisovať súbory XLS z programu Java.

Ak programátor napíše rámec, ktorý generuje kód alebo interaguje s bytecodes, potom potrebuje knižnicu bytecode. Umožňuje vám čítať a upravovať bytecode generovaný aplikáciou. Niektoré z populárnych bajtov knižnice sú javassist a Cglib Nodep. Java Programming Assistant robí manipuláciu s bajtovým kódom veľmi jednoduchou. ASM je ďalší užitočný modul na jeho úpravu.

Všadeprítomný formát PDF

Všadeprítomný formát PDF

Rovnako ako Microsoft Excel, aj knižnice PDF sú ďalším všadeprítomným formátom. Ak potrebujete v aplikácii podporovať funkčnosť PDF, napríklad na export údajov do súborov PDF, môžete použiť moduly iText a Apache FOP. Oba poskytujú užitočné funkcie súvisiace s PDF, ale iText je lepší.

Pred Java 8 mali dátové a časové moduly JDK nevýhody, pretože neboli orientované na vlákna a podliehali chybám. Vývojári Java sa pri implementácii požiadaviek na dátum a čas spoliehali na JodaTime. Nie je dôvod používať Joda v JDK 8, pretože používateľ dostane tieto funkcie v novom API dátumu a času, ale pre starú verziu Java stojí za to preskúmať túto knižnicu.

Napriek tomu, že JDK má bohatú zbierku, existujú moduly tretích strán, ktoré poskytujú viac funkcií, ako napríklad zbierky Apache Commons, Goldman Sachs, Google a Trove. Library Trove je obzvlášť užitočná, pretože poskytuje vysokorýchlostné pravidelné a primitívne zbierky pre Javu.

Javax.mail a Apache Commons Email poskytujú API na odosielanie e-mailov z Java. Je postavený na vrchole API JavaMail, ktoré je navrhnuté tak, aby zjednodušilo prácu.

Balík Kryptografických Kodekov

Balík Kryptografických Kodekov

Apache Commons obsahuje jednoduchý kódovač a dekodéry pre rôzne formáty, ako napríklad Base64 a hexadecimálne. Okrem týchto široko používaných kódovačov a dekodérov podporuje sadu nástrojov na Fonetické kódovanie. Vložené databázové knižnice SQL, ako napríklad H2, ktoré je možné vložiť do aplikácie Java, sú skvelé na testovanie skriptov SQL a spúšťanie jednotkových testov, ktoré potrebujú databázu. H2 však nie je jedinou databázou, je tu aj výber Apache Derby a HSQL.

Knižnice na riešenie problémov JDBC sú navrhnuté tak, aby uľahčili ladenie, napríklad P6spy. Jedná sa o modul, ktorý vám umožňuje ľahko zachytiť databázové údaje a zaregistrovať ich bez zmeny programového kódu. Môžete ich použiť na zaznamenávanie dotazov SQL a ich načasovania. Napríklad, ak v kóde použijete PreparedStatment a CallableStatement, tieto knižnice môžu zaregistrovať presný hovor s parametrami as definíciou času potrebné pre implementácia.

Medzipamäte protokolu Google sú spôsobom kódovania štruktúrovaných údajov v efektívnom, ale rozšíriteľnom formáte. Je to 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 napíše program, v ktorom je potrebné vykonať sieťovú úlohu na nízkej úrovni, použije tieto moduly.

Java JSON knižnice

Existujú spoľahlivé knižnice JSON na serializáciu/deserializáciu. Podrobnosti o Jacksonovi nájdete v úložisku GitHub.

Java JSON knižnice

Poskytol ho Doug Crockford a bol zavedený do JavaEE 7 platforma ako súčasť žiadosť o špecifikáciu Java (JSR) iniciatíva 353 a je samostatnou implementáciou, ktorú je možné integrovať do SE, počnúc verziou 8.

, deviata modifikácia poskytuje vlastnú podporu pre JSON ako súčasť iniciatívy Enhancement Proposal (JEP) 198.

Výhody Jacksona:

  1. Široko používaný, najmä jarnou komunitou.
  2. Poskytuje vynikajúcu funkčnosť.
  3. Funguje dobre po dlhú dobu.
  4. Dobrá podpora s aktívnou rozvojovou komunitou.
  5. Má dobrú dokumentáciu.
  6. Podporuje zameranie tým, že sa drží jednej knižnice Java / JSON.

Tu sú najdôležitejšie Jacksonove triedy a metódy, ktoré serializujú / deserializujú v JSON:

  1. ObjectMapper-konvertuje konštrukty medzi Java a JSON.
  2. ObjectMapper.writeValue-prevádza dátový typ Java na JSON a v tomto prípade výstupy na Writer.
  3. ObjectMapper.readValue-konvertuje JSON na dátový typ Java.

Spustite test jednej jednotky z príkazového riadku nasledovne:

cd Kapitola-4 / reproduktory-test

+Gradle test-testy org.jsonatwork.ch4.BasicJsonTypesTest+

Test jednej jednotky

Horstmann Vzdelávacie Knihy

Horstmann Vzdelávacie Knihy

Rozmanitosť knižníc núti programátorov nájsť vyčerpávajúceho, ale stručného sprievodcu všetkými novými funkciami Java SE 9. Horstmannove knihy im v tom pomáhajú , desiate vydanie knihy "Java-profesionálna knižnica" je obzvlášť zaujímavé pre začínajúcich používateľov.

Kay S. Horstmann je profesorom informatiky Štátna Univerzita San Jose. Je skúseným profesionálnym programátorom a konzultantom pre veľké korporácie, univerzity a organizácie v oblasti programovania Java, C++, Windows a internetu. 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 Java", "Objektovo orientovaný dizajn a šablóny".

Kniha Cornella Horstmanna "Java Professional Library" pokrýva všetky dôležité aspekty jazyka, ktoré by mal moderný vývojár poznať, vrátane modularity, ako aj silných výrazov lambda prezentovaných v 8. verzii. Načrtávajú základy programovania pomocou Java prístupnejším a menej prísnym prístupom.

Kniha poskytuje užívateľsky prívetivejší intenzívny grafický dizajn, ktorý sprostredkúva zložité koncepty jednoducho a efektívne. Od ostatných kníh na trhu sa líši tým, že sa zameriava na témy, ako sú slučky a grafické rozhrania, pričom sa vyhýba objektovej orientácii. Dôraz sa kladie na jednoduché programy, ktoré používajú vopred vytvorené dátové štruktúry a algoritmy.

Príklady a prípadové štúdie zvažujú praktické aplikácie, ktoré môžu byť užitočné pre programátorov, vedcov a inžinierov, napríklad spracovanie tabuľkových údajov, zhromažďovanie informácií na internete, grafické knižnice Java na vytváranie používateľských grafických obrázkov a rozhraní.

Spôsoby, ako zlepšiť výkon knižnice

Spôsoby, ako zlepšiť výkon

S JSONOM sa ľahko pracuje a stal sa štandardným formátom údajov takmer pre všetko. Stackify široko používa JSON na REST API, serializáciu správ vo fronte a oveľa viac.

Niektoré všeobecné tipy na výkon JSON:

  1. Použitie viacerých knižníc JSON pre optimálny výkon a funkcie.
  2. Používajte streamy, kedykoľvek je to možné.
  3. Komprimovať vlastné JSON. Keďže ide len o text, môžete počítať s kompresiou až do 90%. Preto používajú "zips" všade, kde je to možné.
  4. Vyhnite sa analýze, ak to nie je potrebné.
  5. Vykonajte serializáciu / deserializáciu veľkých a menších objektov JSON. V niektorých prípadoch, keď potrebujete získať rad veľkých objektov, je rozdelená na menšie časti.
  6. Konfigurácia analyzátora webového rozhrania API JSON.
  7. Nerializujte všetky polia, hodnoty null ani predvolené hodnoty.
  8. Použite kratšie názvy polí.
  9. Manuálna serializácia alebo analýza môže byť rýchlejšia.

Aplikácie sú v skutočnosti bežné počítačové programy bežiace na mnohých zariadeniach v reálnom svete. Majú špeciálnu schopnosť prístupu k senzorom a ovládaniu hardvéru. Na tento účel výrobcovia poskytujú takzvané programovacie knižnice, vďaka ktorým je relatívne ľahké používať hardvér vo vyvinutom programe.

Články na tému