Java könyvtár: fájlok létrehozása, feldolgozása, kezelése

A Java a nyílt forráskódú világ egyik pillére. . Minden projektje más nyílt forráskódú alkalmazásokat használ, elég a hálózaton, és a felhasználóknak nincs szükségük "a kerék újrafeltalálása". Mindazonáltal gyakran előfordul, hogy a fejlesztőknek speciális Java könyvtárra van szükségük a funkcionalitáshoz, de fogalmuk sincs, hogyan kell létrehozni.

Főbb tervezési elvek

A kód újrafelhasználása a számítógépes programozás egyik szent grálja. A könnyen újrafelhasználható kód írása összetett készségeket igényel, de természetesen bárki elsajátíthatja. A Java nyelv segíthet egy jó újrafelhasználható platform létrehozásában. Ehhez a fejlesztőnek alapvető programozási ismeretekkel kell rendelkeznie, beleértve az egyszerű programok létrehozását, fordítását és végrehajtását a parancssorból.

Néhány kulcsfontosságú alapelv

A jó Java könyvtártervezés néhány alapelve:

  1. Világosan át kell adnia belső szerkezetét oly módon, hogy a felhasználó tudja, hogyan kell használni, még akkor is, ha nem érti, hogyan működik belülről.
  2. Kapszulázás-a kód interfész szigorítása és finomítása, ami megbízhatóbbá és érthetőbbé teszi.
  3. A bővíthetőség egy olyan Java könyvtár létrehozása, amely jól teljesíti feladatát, és lehetőséget nyújt a hiányzó részek kitöltésére egy adott Fejlesztő igényeinek kielégítésére.
  4. Öröklés-biztosítja a Testreszabás módja kód anélkül, hogy ismernie kellene a konfigurált kód összes részletét.
  5. A hibakeresési információk kódból történő megszerzésének módja-segít a felhasználóknak megtalálni a saját hibáikat.

A funkcionalitás határai: bemenet és kimenet

A probléma az, hogy nem minden Java könyvtár tervező gondol a felhasználókra, hogyan alkalmazzák az API-t a gyakorlatban, és hogyan fog kinézni és tesztelni a kódot.

A funkcionalitás határai talán a legfontosabb téma. Jó gyakorlat, ha az összes függőséget a konstruktorokon keresztül, valamint azok rövidségét több paraméterrel adjuk át. Ha több mint három vagy négy paraméterrel rendelkező konstruktorra van szüksége, akkor egyértelmű, hogy a kódot újra kell szervezni.

A fejlesztőknek mindig egynél több konstruktort kell kínálniuk a felhasználóknak. Az ügyfeleknek a String és az Integer használatával kell dolgozniuk, hogy a modulok tesztelésekor áthaladhassanak a ByteArrayInputStream-en.

Például, többféle módon Github API belépési pont létrehozása a jcabi-github használatával:

  • Github noauth= új RtGithub();
  • Github basicauth = új RtGithub("felhasználónév", "jelszó");
  • Github oauth = új RtGithub ( "token").

Második példaként, hogyan kell együttműködni charles-szal, egy professzionális Java könyvtárral a webes szkenneléshez, a következőket írhatja.

A könyvtár beolvasása

Alapértelmezés szerint a sablonokat nem szabad figyelmen kívül hagyni. Az IndexPage változó az az URL, ahonnan a tartalom feltérképezése megkezdődik, az Illesztőprogram a használt böngésző. Alapértelmezés szerint nem tehet semmit, mert nem ismert, hogy melyik böngésző van telepítve a futó gépen. A kimenet szükséges főleg a Könyvtár, amely kommunikál a külvilággal. Itt kell válaszolnia arra a kérdésre, hogy hogyan fogják feldolgozni.

Ehhez meg kell adnia valamit, mint ez:

WebCrawl graph = új GraphCrawl ( ...); Lista oldalak = grafikon.feltérképezés();

Interfész és harmadik felek

A fejlesztőnek mindig interfészeket kell használnia, a felhasználó pedig csak szigorú szerződések révén köteles kölcsönhatásba lépni a kóddal. Például a jcabi-github könyvtárban csak az RtGithub si osztályt látja.

Interfész és harmadik felek

A fenti töredék létrehoz egy alkalmazást az eugenp / tutorials repository-ban. A Repo és a kibocsátási példányokat alkalmazzák, de a tényleges típusokat soha nem teszik közzé. A fenti forgatókönyv megoldható, de a kifejlesztett algoritmus nagy mennyiségű szabványos kóddal szennyeződik.

Az interfészek egyszerű bővíthetőséget és visszamenőleges kompatibilitást biztosítanak. az egy kézzel a fejlesztők kötelesek betartani a már kiadott szerződéseket, másrészt a felhasználó kibővíti a javasolt interfészeket: díszítheti őket, vagy alternatív megvalósításokat írhat.

A jó könyvtár könnyű. A kódnak meg kell oldania a problémát és működőképesnek kell lennie. Ha sok függőségre van szüksége. Valószínűleg a fejlesztő túl sok funkciót próbál lefedni, ezért a projektet több kisebbre kell osztania.

A projektnek a lehető legátláthatóbbnak kell lennie. A legjobb példa az SLF4J használata naplózási API-val. Ne használja közvetlenül a log4j-t, a fejlesztő más naplózási eszközöket is használhat.

A projekten átmenő dokumentumok Java könyvtárainak összekapcsolása úgy történik, hogy a veszélyes függőségeket, például a xalan vagy az xml-API-kat nem tartalmazzák.

Több százezer könyvtár van a világon, de a programozóknak csak kis számú legfunkcionálisabb modult kell ismerniük.

Unit Testing Library

Unit Testing Library

A naplómodulok nagyon gyakoriak a fejlesztők körében, minden projektben szükség van rájuk. Különösen fontos a szerveralkalmazások számára, mert a naplók csak akkor kerülnek elhelyezésre, ahol láthatja, mi történik bennük. Annak ellenére, hogy a JDK saját naplózási könyvtárral rendelkezik, vannak jobb alternatívák, például Log4j, SLF4j és LogBack. A Java fejlesztőnek ismernie kell a log könyvtárak előnyeit és hátrányait, és tudnia kell, miért jobb az SLF4j használata, mint az egyszerű Log4j.

A webszolgáltatások és az IoT modern világában a JSON átmeneti protokoll lett az információk ügyfélről szerverre történő átvitelére. Felváltotta az XML-t, mint az információ továbbításának legelőnyösebb módját, platformtól függetlenül. Sajnos a JDK nem rendelkezik JSON könyvtárral. De sok van jó harmadik féltől származó modulok, amelyek lehetővé teszik az üzenetek elemzését és létrehozását, például Jackson. A webfejlesztőnek ismernie kell legalább egy ilyen könyvtárat.

Az egység tesztelése a legfontosabb funkció, amely elválasztja a hétköznapi fejlesztőt a szakembertől. A programozóknak gyakran megbocsátják, hogy nem írtak unit teszteket, és a leggyakoribb az ilyen tesztelés elmaradásának oka a népszerű unit tesztelési könyvtárak, köztük a JUnit, a Mockito és a PowerMock tapasztalatainak és ismereteinek hiánya.

Számos jó általános célú harmadik féltől származó könyvtár áll a Java fejlesztők rendelkezésére, mint például az Apache Commons és a Google Guava. Sok feladatot egyszerűsítenek. Ahogy Joshua Bloch helyesen mondta az Effective Java - ban, nincs értelme újra feltalálni a kereket, jobb, ha bevált és tesztelt modulokat használ, ahelyett, hogy saját rutinokat írna. Hasznos egy Java fejlesztő számára, hogy megismerkedjen a Google Guava-val és az Apache Commons könyvtárral.

HTTP-kompatibilis platform

Sok fejlesztőnek nem tetszik a HTTP támogatás hiánya a JDK-ban. HTTP kapcsolatot hozhat létre a Java osztályok használatával.net egy csomag nyílt forráskódú harmadik féltől származó könyvtárak, mint például Apache HttpClient és HttpCore.

Bár a JDK 9 HTTP 2.0 támogatással rendelkezik.a szakértők azt javasolják a fejlesztőknek, hogy ismerkedjenek meg a népszerű HTTP kliens könyvtárakkal, beleértve a HttpClient és a HttpCore-t.

Vannak elemző könyvtárak

Vannak XML elemző könyvtárak, beleértve a Xerces, JAXB, Jaxp, Dom4j és Xstream. A Xerces 2 a nagy teljesítményű, teljesen kompatibilis XML analizátorok új generációja az Apache Xerces családban. A Xerces új verziója bemutatja a Xerces (XNI) natív felületét, teljes platform a elemző komponensek és konfigurációk létrehozása, amelyek rendkívül modulárisak és könnyen programozhatók.

Az Apache Xerces 2 elemző az XNI referencia implementációja, de más konfigurációs összetevők írhatók a natív Xerces felület segítségével. A Dom4j egy másik rugalmas XML keretrendszer a Java könyvtár létrehozásához.

A valós programoknak ilyen vagy olyan formában kölcsönhatásba kell lépniük a Microsoft Office-szal. Sokuknak funkcionalitást kell biztosítania az adatok Excelbe történő exportálásához, és ha ezt Java alkalmazásból kell elvégezni, akkor az Apache POI API-ra lesz szükség. Ez egy nagyon gazdag könyvtár, amely lehetővé teszi XLS fájlok olvasását és írását egy Java programból.

Ha egy programozó olyan keretet ír, amely kódot generál vagy kölcsönhatásba lép a bájtkódokkal, akkor szüksége van egy bájtkódkönyvtárra. Ez lehetővé teszi az alkalmazás által generált bájtkód olvasását és módosítását. Néhány népszerű könyvtári bájt a javasassist és a Cglib Nodep. A Java programozási asszisztens nagyon egyszerűvé teszi a bájtkód-manipulációt. Az ASM egy másik hasznos modul a szerkesztéshez.

Mindenütt jelen lévő PDF formátum

Mindenütt jelen lévő PDF formátum

A Microsoft Excelhez hasonlóan a PDF könyvtárak is egy másik mindenütt jelenlévő formátum. Ha támogatnia kell a PDF funkciókat az alkalmazásban, például adatok exportálásához PDF fájlokba, használhatja az iText és az Apache FOP modulokat. Mindkettő hasznos PDF-hez kapcsolódó funkciókat kínál, de az iText jobb.

A Java 8 előtt a JDK adat-és időmoduloknak voltak hátrányai, mivel nem voltak szálorientáltak és hibáknak voltak kitéve. A Java fejlesztők a jodatime-ra támaszkodtak a dátum-és időkövetelmények végrehajtásához. Nincs ok a Joda használatára a JDK 8-ban, mert a felhasználó ezeket a funkciókat az új date and time API-ban kapja meg, de a Java régi verziójához érdemes megvizsgálni ezt a könyvtárat.

Annak ellenére, hogy a JDK gazdag gyűjteménygel rendelkezik, vannak olyan harmadik féltől származó modulok, amelyek több funkciót biztosítanak, mint például az Apache Commons, a Goldman Sachs, a Google és a Trove gyűjtemények. Library Trove különösen hasznos, mert ez biztosítja a nagy sebességű rendszeres és primitív gyűjtemények Java.

Javax.a mail és az Apache Commons e-mail API-t biztosít az e-mailek Java-ból történő küldéséhez. A JavaMail API tetejére épül, amelynek célja a munka egyszerűsítése.

Kriptográfiai Kodek Csomag

Kriptográfiai Kodek Csomag

Az Apache Commons tartalmaz egy egyszerű kódolót és dekódert különböző formátumokhoz, például Base64 és hexadecimális. Amellett, hogy ezek a széles körben használt kódolók és dekóderek, támogatja egy sor fonetikus kódoló segédprogramok. A beágyazott SQL adatbázis-könyvtárak, például a H2, amelyek beágyazhatók egy Java alkalmazásba, kiválóan alkalmasak az SQL szkriptek tesztelésére és az adatbázist igénylő egységtesztek futtatására. Azonban a H2 nem az egyetlen adatbázis, az Apache Derby és a HSQL is választható.

A JDBC hibaelhárítási könyvtárakat úgy tervezték, hogy megkönnyítsék a hibakeresést, például a P6spy. Ez egy olyan modul, amely lehetővé teszi az adatbázis-adatok egyszerű elfogását és regisztrálását a programkód megváltoztatása nélkül. Használhatja őket az SQL lekérdezések naplózására és időzítésére. Ha például a preparedstatment és a CallableStatement parancsot használja a kódban, ezek a könyvtárak regisztrálhatják a pontos hívást paraméterekkel és az idő meghatározásával szükséges megvalósítások.

A Google Protokollpufferek a strukturált adatok hatékony, de bővíthető formátumban történő kódolásának egyik módja. Ez egy gazdagabb és jobb alternatívája Java serialization. Néhány hasznos hálózati könyvtár a Netty és az Apache MINA. Ha egy fejlesztő olyan programot ír, amelyben alacsony szintű hálózati feladatot kell végrehajtani, akkor ezeket a modulokat használja.

Java JSON könyvtárak

Megbízható JSON könyvtárak vannak a sorosításhoz/dezerializáláshoz. Jacksonnal kapcsolatos részleteket a GitHub adattárban talál.

Java JSON könyvtárak

Ezt Doug Crockford szolgáltatta, és a JavaEE 7 platformba a Java Specification Request (JSR) Initiative 353 részeként vezették be, és önálló megvalósítás, amely integrálható az SE-vel, a 8-as verziótól kezdve.

, a kilencedik módosítás saját támogatást nyújt a JSON számára az Enhancement Proposal (JEP) 198 kezdeményezés részeként.

Jackson előnyei:

  1. Széles körben használják, különösen a tavaszi közösség.
  2. Kiváló funkcionalitást biztosít.
  3. Hosszú ideig jól működik.
  4. Jól támogatott egy aktív fejlesztési közösség.
  5. Jó dokumentációval rendelkezik.
  6. Támogatja a fókuszt azáltal, hogy egyetlen Java / JSON könyvtárhoz ragaszkodik.

Itt vannak a legfontosabb Jackson osztályok és módszerek, amelyek serialize / deserialize a JSON-ban:

  1. ObjectMapper-átalakítja a Java és a JSON közötti konstrukciókat.
  2. ObjectMapper.writeValue-átalakítja a Java adattípust JSON - ra, és ebben az esetben kimenetet ad a Writernek.
  3. ObjectMapper.readValue-átalakítja a JSON-t Java adattípussá.

Futtasson egyetlen egység tesztet a parancssorból az alábbiak szerint:

cd fejezet-4 / hangszórók-teszt

+gradle teszt -- tests org.jsonatwork.ch4.Alapjsontypest+

Egyetlen egység teszt

Horstmann Oktatási Könyvek

Horstmann Oktatási Könyvek

A könyvtárak sokfélesége arra kényszeríti a programozókat, hogy kimerítő, de tömör útmutatót találjanak a Java SE 9 összes új funkciójához. Horstmann könyvei segítenek ebben , a "Java-professional Library" könyv tizedik kiadása különösen érdekes A kezdő felhasználók számára.

Kay S. Horstmann a számítástechnika professzora az Állami Egyetem San Jose. Tapasztalt profi programozó és tanácsadó nagyvállalatok, egyetemek és szervezetek számára a Java, A C++, A Windows és az internetes programozás területén. Horstmann számos sikeres szakmai és tudományos könyv szerzője, többek között "Nagy C ++", "C++ mindenkinek", "Nagy Java", "Objektum-orientált tervezés és sablonok".

Cornell Horstmann "Java Professional Library" könyve lefedi a nyelv minden fontos szempontját, amelyet a modern fejlesztőnek tudnia kell, beleértve a modularitást, valamint a 8. változatban bemutatott erőteljes lambda kifejezéseket. Felvázolják a Java használatával történő programozás alapjait egy hozzáférhetőbb és kevésbé szigorú megközelítésben.

A könyv felhasználóbarátabb, intenzív grafikai tervezést nyújt, amely összetett fogalmakat közvetít egyszerűen és hatékonyan. Abban különbözik a piacon lévő többi könyvtől, hogy olyan témákra összpontosít, mint a hurkok és a grafikus interfészek, miközben elkerüli az objektumorientációt. A hangsúly az egyszerű programokon van, amelyek előre létrehozott adatstruktúrákat és algoritmusokat használnak.

Példák és esettanulmányok olyan gyakorlati alkalmazásokat vesznek figyelembe, amelyek hasznosak lehetnek a programozók, tudósok és mérnökök számára, például táblázatos adatok feldolgozása, információk gyűjtése az Interneten, Java grafikus könyvtárak felhasználói grafikus képek és interfészek létrehozásához.

A könyvtár teljesítményének javítása

A teljesítmény javításának módjai

A JSON-nal könnyű dolgozni, és szinte minden szabványos adatformátumává vált. A Stackify széles körben használja a JSON-t a REST API-khoz, a sorban lévő üzenetek sorosításához és még sok máshoz.

Néhány általános JSON Teljesítménytippek:

  1. Több JSON könyvtár használata az optimális teljesítmény és funkciók érdekében.
  2. Használjon patakokat, amikor csak lehetséges.
  3. Tömörítse az egyéni JSON-t. Mivel ez csak szöveg, számíthat a tömörítésre akár 90% - ig%. Ezért a "zip" - et használják, ahol csak lehetséges.
  4. Kerülje az elemzést, ha nem szükséges.
  5. Nagy és kisebb JSON objektumok szerializálásának/deserializálásának végrehajtása. Bizonyos esetekben, amikor nagy objektumok tömbjét kell beszereznie, kisebb részekre oszlik.
  6. A JSON Web API Analyzer konfigurálása.
  7. Ne sorosítson minden mezőt, null értéket vagy alapértelmezett értéket.
  8. Használjon rövidebb mezőneveket.
  9. A kézi sorosítás vagy elemzés gyorsabb lehet.

Az alkalmazások valójában rendes számítógépes programok, amelyek sok valós eszközön futnak. Különleges képességük van az érzékelők és a hardver vezérlésére. Ehhez a gyártók úgynevezett programozási könyvtárakat biztosítanak, amelyek viszonylag egyszerűvé teszik a hardver használatát egy fejlett programban.

Cikkek a témában