Java knihovna: vytváření, zpracování, práce se soubory

Java je jedním z pilířů open source světa. Každý z jeho projektů využívá jiné aplikace s otevřeným zdrojovým kódem, jsou v síti dostatečné a uživatelé nemusí "znovu objevit kolo". Často se však stává, že vývojáři potřebují pro funkcionalitu speciální knihovnu Java a nemají tušení, jak ji vytvořit.

Klíčové principy návrhu

Opětovné použití kódu je jedním z posvátných šarálů počítačového programování. Psaní kódu, které lze snadno použít, vyžaduje složité dovednosti, ale samozřejmě se ho může každý naučit. Jazyk Java může pomoci vytvořit dobrou multiplatformu. K tomu musí mít vývojář základní znalosti programování, včetně schopnosti vytvářet, kompilovat a provádět jednoduché programy z příkazového řádku.


Několik klíčových principů dobrého návrhu knihovny Java:
  • Musí jasně vysvětlovat svou vnitřní strukturu tak, aby uživatel věděl, jak ji používat, i když nechápe, jak to funguje zevnitř.
  • Zapouzdření je tuhost a zdokonalení kódu rozhraní, což z něj činí spolehlivější a srozumitelnější.
  • Rozšiřitelnost je vytvoření knihovny Java, která dobře plní svou úlohu a poskytuje schopnost vyplnit chybějící součásti tak, aby vyhovovaly potřebám konkrétního vývojáře.
  • Dědičnost - poskytuje způsob, jak nastavit kód, aniž by musel znát všechny podrobnosti o kódu, kterýje přizpůsobitelné
  • Poskytování způsobu, jak získat informace o ladění z kódu - pomáhá uživatelům najít jejich vlastní chyby.
  • Funkční hranice: vstup a výstup

    Problémem je, že ne všichni návrháři knihovny Java uvažují o svých uživatelích, jak API bude aplikován v praxi a jak vypadá a testuje kód.


    Hranice funkčnosti jsou možná nejdůležitějším tématem. Dobrou praxí je přenášet všechny závislosti pomocí konstruktorů a jejich stručnost s několika parametry. Pokud potřebujete konstruktor s více než třemi nebo čtyřmi parametry, pak je zřejmé, že kód musí být reorganizován. Také vývojáři by měli vždy nabídnout uživatelům více než jednoho návrháře. Zákazníci by měli pracovat se značkami String a Integer, aby při vyhodnocování modulů mohli projít metodou ByteArrayInputStream. Například několik způsobů vytvoření vstupního bodu Github API pomocí jcabi-github:
  • Github noauth = nový RtGithub ();
  • Github basicauth = nový RtGithub ("uživatelské jméno", "heslo");
  • Github oauth = nový RtGithub ("token").
  • Jako druhý příklad, jak pracovat s knihovnou Java, profesní knihovna Java pro procházení webu, můžete předepsat následující.
    Ve výchozím nastavení by šablony neměly být ignorovány. Proměnná indexPage je adresa URL, ze které má být obsah procházen a ovladač je použitý prohlížeč. Ve výchozím nastavení nemůže nic dělat, protože není známo, který prohlížeč je nainstalován na spuštěném počítači. Výstup je nutný zejména pro knihovnu, která komunikuje s okolním světem. Zde musíte odpovědět na otázku, jak to budekteré mají být zpracovány
    Chcete-li to provést, musíte předepsat něco takového: WebCrawl graph = new GraphCrawl (); List pages = graph.crawl ();

    Rozhraní a třetí strany

    Vývojář musí vždy používat rozhraní a uživatel je povinen komunikovat s kódem pouze prostřednictvím přísných smluv. Například v knihovně jcabi-github je třída RtGithub si jediná, kterou vidí.
    Výše ​​uvedený fragment vytvoří aplikaci v repozitáři eugenp /tutorials. Používají se kopie repo a emisí, ale skutečné typy nejsou nikdy zveřejněny. Výše uvedený scénář může být vyřešen, ale vyvinutý algoritmus bude kontaminován velkým počtem standardních kódů. Rozhraní také poskytují snadné rozšíření a zpětnou kompatibilitu. Na jedné straně jsou vývojáři povinni dodržovat již vydané smlouvy a na straně druhé uživatel rozšiřuje navrhovaná rozhraní: může je zdobit nebo napsat alternativní implementace. Dobrá knihovna je snadná. Kód musí problém vyřešit a být funkční. Pokud potřebujete spoustu závislostí. Pravděpodobně se vývojář snaží pokrýt příliš mnoho funkcí a musí přerušit projekt na několik malých. Projekt by měl být co nejtransparentnější. Nejlepším příkladem je použití protokolu SLF4J s protokolem API. Neměli byste se přihlásit přímo, možná, že vývojář bude chtít použít další nástroje pro protokolování. Spojením knihoven Java s dokumenty, které procházejí procesem, dochází k přechodnému provádění takových nebezpečných závislostí, jako je například xalan nebo xml-apis. Na světě jsou stovky tisícknihovny, ale programátoři potřebují znát jen malý počet nejvíce funkčních modulů.

    Knihovna testů modulů

    Vývojáři mají velmi běžné logové moduly, které potřebují v každém projektu. Zvláště důležité pro serverové aplikace, protože časopisy jsou umístěny pouze tam, kde můžete vidět, co se v nich děje. Navzdory skutečnosti, že JDK přichází s vlastní žurnálovou knihovnou, existují lepší alternativy, jako jsou Log4j, SLF4j a LogBack. Java developer by měli být obeznámeni s spletité časopisů a knihovna vědět, proč používat SLF4j lepší než jen Log4j.
    V moderním světě webových služeb a IoT se JSON stal přenosovým protokolem pro přenos informací z klienta na server. Nahradil XML jako nejvhodnější způsob přenosu informací bez ohledu na platformu. Bohužel, JDK nemá knihovnu JSON. Existuje však mnoho dobrých modulů třetích stran, které vám umožňují analyzovat a vytvářet zprávy, jako je Jackson. Webový vývojář by měl být obeznámen s alespoň jednou z těchto knihoven. Modulární testování je nejdůležitějším prvkem, který odděluje běžného vývojáře od odborníka. Programátoři často odpouštět, protože nemají psát unit testy, a nejčastější výmluvou pro absenci těchto testů je nedostatek zkušeností a znalostí populárních testování jednotky knihoven, včetně JUnit, Mockito a PowerMock.

    , k dispozici pro vývojáře v jazyce Java některé dobré pro všeobecné použití knihoven třetích stran, jako je například Apache Commons a Google Guava. Zjednodušují spoustu úkolů. Jak spravedlivéJoshua Blich řekl: "Efektivní Java", nemá smysl vynalézt kolo, je lepší používat osvědčené a testované moduly namísto psaní vlastních podprogramů. Vývojář Java je užitečný pro seznámení s Google Guava a knihovnou Apache Commons.

    Platforma s podporou HTTP

    Mnoho vývojářů nemá rád JDK nedostatek podpory HTTP. Připojení HTTP můžete nainstalovat pomocí třídy open source knihoven java.net, jako jsou Apache HttpClient a HttpCore. Přestože je JDK 9 podporuje HTTP 2.0 a vylepšenou podporu pro HTTP, odborníci doporučují vývojáři seznamuje s populárním knihovny klienta HTTP, včetně HttpClient a HttpCore.
    Existují knihovny parsování XML, včetně Xerces, JAXB, JAXP, Dom4j a Xstream. Xerces2 je nová generace vysoce výkonných, plně kompatibilních analyzátorů XML ve skupině Apache Xerces. Nová verze Xerces prezentuje své Xerces rozhraní (XNI), kompletní platformu pro stavebních prvků a konfigurace analyzátoru, který je velmi modulární a snadné programování. Apache Xerces2 parser je implementace XNI reference, ale jiné konfigurace komponenty mohou být psány s využitím vlastních Xerces rozhraní. Dom4j je další flexibilní struktura XML pro vytváření knihovny Java.
    Programy reálného světa musí komunikovat s Microsoft Office v jednom či druhém formátu. Mnoho z nich poskytují funkce pro export dat do Excelu, a pokud je to nutné make Java aplikací, musíte API rozhraní Apache POI. Jedná se o velmi bohatou knihovnu, která vám umožňuje číst apsát soubory XLS z java programu. Pokud programátor zapíše rámeček, který generuje kód nebo interaguje s bytekódem, potřebuje knihovnu bytecode. Umožňuje číst a upravovat bytecode generované programem. Některé populární knihovní byty jsou javasista a Cglib Nodep. Asistent programování jazyka Java usnadňuje manipulaci s uživatelem. ASM je další užitečný modul pro jeho úpravy.

    Rozsáhlý formát PDF

    Jako knihovna Microsoft Excel jsou knihovny PDF jiným běžným formátem. Chcete-li podporovat funkcionalitu PDF v aplikaci, například export dat do PDF, můžete použít moduly iText a Apache FOP. Oba poskytují užitečné funkce související s PDF, ale iText je lepší. Až do verze Java 8 měly data a časové moduly JDK nevýhody, protože nebyly orientovány na proud a byly vystaveny chybám. Java vývojáři spoléhali na JodaTime, aby vyhověli požadavkům data a času. JDK 8 nemá důvod použít Joda, protože uživatel obdrží tyto funkce v novém datu a čase API, ale pro starou verzi Java je vhodné prozkoumat tuto knihovnu. Navzdory skutečnosti, že JDK má bohatou kolekci, existují moduly třetích stran, které poskytují další funkce, jako Apache Commons, Goldman Sachs, Google a Treasure Collection. Library Treasure je obzvláště užitečné, protože poskytuje vysokorychlostní pravidelné a primitivní sbírky pro Javu. Javax.mail a Apache Commons Email poskytují rozhraní API pro odesílání e-mailů z Java. Je postavena na rozhraní JavaMail API, která je navržena tak, aby zjednodušila práci.

    Kryptografický balíček kodeků

    Apache Commons obsahuje jednoduchý enkodér adekodéry pro různé formáty, jako Base64 a Hexadecimal. Kromě těchto běžně používaných enkodérů a dekodérů podporuje soubor nástrojů fonetického kódování. Knihovny vestavěných databází SQL, jako například H2, které mohou být vloženy do aplikace Java, jsou skvělé pro testování skriptů SQL a spouštění modulárních kritérií, které vyžadují databázi. Nicméně H2 není jediná databáze, ale je k dispozici také pro Apache Derby a HSQL. JDBC Odstraňování potíží Knihovny jsou navrženy tak, aby usnadňovaly ladění, například P6spy. Jedná se o modul, který umožňuje snadné zachycení databázových dat a jejich zápis bez změny programového kódu. Můžete je použít k registraci dotazů SQL a jejich času. Pokud například použijete kód PreparedStatment a CallableStatement, tato knihovna může zaregistrovat přesný hovor s parametry a časem potřebným k provedení. Google Buffer je způsob kódování strukturovaných dat v efektivním, ale rozšiřitelném formátu. Jedná se o bohatší a lepší alternativu k serializaci Java. Některé užitečné síťové knihovny jsou Netty a Apache MINA. Pokud vývojář zapíše program, ve kterém má provádět úkol sítě na nízké úrovni, použije tyto moduly.

    Knihovny Java Json

    K dispozici jsou spolehlivé knihovny JSON pro serializaci /deserializaci. Podrobnosti o Jacksonovi najdete v úložišti GitHub.
    To za předpokladu, Doug Krokfordom a byl představen v JavaEE plošině 7 v rámci iniciativy 353 „specifikace Žádost Java» (JSR) je autonomní a implementace, které mohou být integrovány s SE, od verze 8. Devátý modifikace poskytuje vlastní podporu JSON v tomto rámciNávrh na vylepšení iniciativ (JEP) 198. Výhody společnosti Jackson:
  • Široce využívané zejména jarním společenstvím.
  • Poskytuje vynikající funkčnost.
  • Pracuje dobře po dlouhou dobu.
  • Dobře podporovaná aktivní komunitou rozvoje.
  • ​​
  • Má dobrou dokumentaci.
  • Podporuje zaostření sledováním jedné knihovny Java /JSON.
  • Zde jsou nejdůležitější třídy a metody Jackson, které serializují /deserialize v JSON:
  • ObjectMapper - Constructs Java a JSON.
  • ObjectMapper.writeValue - Převede typ dat Java na JSON a v tomto případě na výstupy ze Writeru.
  • ObjectMapper.readValue - Převede JSON na datový typ Java.
  • Zavedení jedné zkušební modul z příkazového řádku takto: CD kapitola-4 /reproduktory-test + gradle zkušební --tests org.jsonatwork.ch4.BasicJsonTypesTest +

    Učebnice Horstmanna

    Rozmanitost softwarové knihovny činí hledání celkového ale stručné vodítko ke všem funkcím Java SE 9. v této knize, pomáhají Horstmanna zvláště zajímavé začínající uživatele desáté vydání knihy «Java knihovna profesionální.“ Kay S. Horstmann je profesorem informatiky na Státní univerzitě v San Jose. Je zkušený profesionální programátor a konzultant pro velké korporace, univerzity a organizace z Java, C ++, Windows a internetového programování. Horstmann je autorem mnoha úspěšných odborných a akademických knih, včetně „Big C ++“, „C ++ pro všechny“, „Big Jáva“, „objektově orientovaného designu a vzory.“ Cornell Horstmann "Java Professional Library" pokrývá všechny důležité aspekty.jazyky, které moderní vývojář musí vědět, včetně modularity, stejně jako silné výrazy lambda, které jsou uvedeny ve verzi 8. Načrtávají základy programování pomocí Java v dostupnějším a méně přísném přístupu. Kniha poskytuje komfortnější intenzivní grafický design, který jednoduše a efektivně sděluje komplexní pojmy. Odlišuje se od ostatních knih na trhu tím, že se zaměřuje na témata, jako jsou smyčky a grafická rozhraní, a zároveň se vyhýbá orientaci na orientaci objektů. Důraz je kladen na jednoduché programy, které používají již existující datové struktury a algoritmy. Příklady a případové studie se zabývají praktickými aplikacemi, které mohou být užitečné pro programátory, vědce a inženýry, například zpracování tabulkových dat, shromažďování informací na internetu, knihovny grafiky Java pro vytváření grafických obrazů a rozhraní.

    Způsoby zlepšení knihovny produktivity

    JSON je snadné pracovat a stal se standardním datovým formátem prakticky všechno. Stackify je široce využívána aplikací JSON pro rozhraní API REST, serializace zpráv ve frontě a další. Některé běžné rady týkající se produktivity JSON:
  • Používejte více knihoven JSON pro optimální výkon a funkce.
  • Použijte proudy, kdykoli je to možné.
  • Zkomprimujte vlastní JSON. Jelikož je to jen text, můžete počítat s kompresí až o 90%. Proto použijte "zip" tam, kde je to možné.
  • Vyhněte se analýze, pokud není požadována.
  • Vykonáníserializace /deserializace velkých a menších objektů JSON. V některých případech, když potřebujete získat řadu velkých objektů, je rozdělen na menší kousky.
  • Konfigurace analyzátoru JSON Web API.
  • Neserializujte všechna pole, hodnoty null nebo výchozí hodnoty.
  • Používejte kratší názvy polí.
  • Manuální serializace nebo analýza může být rychlejší.
  • Doplňky jsou ve skutečnosti standardní počítačové programy běžící na mnoha zařízeních v reálném světě. Mají speciální přístup k senzorům a ovládání hardwaru. Za tímto účelem poskytují výrobci tzv. Programovací knihovny, které umožňují poměrně snadné použití hardwaru v programu.

    Související publikace