Biblioteka Java: tworzenie, przetwarzanie, praca z plikami

Java jest jednym z filarów świata open source. Każdy z jego projektów korzysta z innych aplikacji open source, są one wystarczające w sieci i użytkownicy nie muszą "wymyślać roweru na nowo". Jednak często zdarza się, że deweloperzy potrzebują specjalnej biblioteki Java dla funkcji i nie mają pojęcia, jak ją utworzyć.

Kluczowe zasady projektowania

Ponowne użycie kodu jest jednym ze świętych grails programowania komputerowego. Pisanie kodu, który można łatwo ponownie wykorzystać, wymaga złożonych umiejętności, ale oczywiście każdy może się tego nauczyć. Język Java może pomóc w tworzeniu dobrej wieloplatformowości. W tym celu programista musi mieć podstawową wiedzę na temat programowania, w tym możliwość tworzenia, kompilowania i uruchamiania prostych programów z wiersza poleceń.


Kilka kluczowych zasad dobrego projektowania biblioteki Java:
  • Musi wyraźnie przekazać swoją wewnętrzną strukturę w taki sposób, aby użytkownik wiedział, jak jej używać, nawet jeśli nie rozumie, jak to działa od środka.
  • Enkapsulacja to sztywność i udoskonalenie kodu interfejsu, co czyni go bardziej niezawodnym i zrozumiałym.
  • Rozszerzalność to tworzenie biblioteki Java, która dobrze wykonuje swoje zadanie i zapewnia możliwość uzupełnienia brakujących części, aby spełnić wymagania konkretnego programisty.
  • Dziedziczenie - Zapewnia sposób ustawienia kodu bez znajomości wszystkich szczegółów kodu, którymożna dostosować
  • Zapewnienie sposobu otrzymywania informacji o debugowaniu z kodu - pomaga użytkownikom znaleźć własne błędy.
  • Granice funkcjonalności: wchodzeniu

    Problem polega na tym, że nie wszyscy projektanci Java Biblioteka myśleć o swoich użytkowników o tym, jak API jest stosowany w praktyce i jak to będzie wyglądać i przetestowany kod.


    Granice funkcjonalności są być może najważniejszym tematem. Dobrą praktyką jest przekazywanie wszystkich zależności przez konstruktorów i ich zwięzłość z kilkoma parametrami. Jeśli potrzebujesz konstruktora z więcej niż trzema lub czterema parametrami, jasne jest, że kod musi zostać zreorganizowany. Ponadto programiści powinni zawsze oferować więcej niż jednego projektanta użytkownikom. Klienci powinni pracować z ciągami i liczbami całkowitymi, aby móc przekazywać ByteArrayInputStream podczas oceny modułów. Na przykład, wiele sposobów, aby utworzyć punkty przejścia przez GitHub API jcabi-GitHub:
  • GitHub noauth = nowy RtGithub ();
  • Github basicauth = nowy RtGithub ("nazwę użytkownika", "hasło");
  • Github oauth = new RtGitub ("token").
  • Jako drugi przykład, w jaki sposób pracować z Charles, Java Biblioteka profesjonalny skanowanie internetowa może przepisać następujące.
    Domyślnie szablony nie powinny być ignorowane. Zmienna indexPage to adres URL, z którego zawartość ma zostać przeszukana, a sterownik to używana przeglądarka. Domyślnie nie może nic zrobić, ponieważ nie wiadomo, która przeglądarka jest zainstalowana na uruchomionym komputerze. Wyjście jest potrzebne głównie dla biblioteki, która komunikuje się ze światem zewnętrznym. Tutaj musisz odpowiedzieć na pytanie, jak to będziedo przetworzenia
    Aby to zrobić, musisz napisać coś takiego: WebCrawl graph = new GraphCrawl (); List pages = graph.crawl ();

    Interfejs i strony trzecie

    Programista musi zawsze korzystać z interfejsów, a użytkownik jest zobowiązany do interakcji z kodem tylko za pomocą ścisłych umów. Na przykład w bibliotece jcabi-github klasa RtGithub si jest jedyną, którą widzi.
    Powyższy fragment tworzy aplikację w repozytorium eugenp /tutorials. Obowiązują kopie wersji Repo i Issue, ale rzeczywiste typy nigdy nie są ujawniane. Powyższy scenariusz można rozwiązać, ale wtedy opracowany algorytm zostanie zanieczyszczony dużą liczbą standardowych kodów. Interfejsy zapewniają także łatwość rozbudowy i kompatybilność wsteczną. Z jednej strony programiści są zobowiązani do przestrzegania już wydanych umów, az drugiej strony użytkownik rozszerza proponowane interfejsy: może je dekorować lub pisać alternatywne implementacje. Dobra biblioteka jest łatwa. Kod musi rozwiązać problem i być funkcjonalny. Jeśli potrzebujesz wielu zależności. Prawdopodobnie programista stara się objąć zbyt wiele funkcji i musi przerwać projekt na kilka małych. Projekt powinien być tak przejrzysty, jak to możliwe. Najlepszym przykładem jest użycie SLF4J z interfejsem logowania. Nie powinieneś log4j bezpośrednio, może deweloper będzie chciał zastosować inne narzędzia do logowania. Łączenie bibliotek Java z dokumentami, które przechodzą przez projekt, przechwytuje przejściowo niebezpieczne zależności, takie jak xalan lub xml-apis, nie są uwzględniane. Na świecie są setki tysięcybiblioteki, ale programiści muszą znać tylko niewielką liczbę najbardziej funkcjonalnych modułów.

    Biblioteka testów modułów

    Deweloperzy mają bardzo popularne moduły dzienników, których potrzebują w każdym projekcie. Jest to szczególnie ważne w przypadku aplikacji serwerowych, ponieważ czasopisma są umieszczane tylko tam, gdzie można zobaczyć, co się w nich dzieje. Pomimo tego, że JDK ma własną bibliotekę do zapisywania, istnieją lepsze alternatywy, takie jak Log4j, SLF4j i LogBack. Programista Java powinien znać zalety i wady bibliotek czasopism i wiedzieć, dlaczego korzystanie z SLF4j jest lepsze niż proste Log4j.
    We współczesnym świecie usług sieciowych i Internetu rzeczy JSON stał się protokołem transferu do przesyłania informacji między klientem a serwerem. Zastąpił XML jako najbardziej odpowiedni sposób przesyłania informacji niezależnie od platformy. Niestety, JDK nie ma biblioteki JSON. Ale istnieje wiele dobrych modułów stron trzecich, które pozwalają analizować i tworzyć wiadomości, takie jak Jackson. Programista sieci powinien znać co najmniej jedną z tych bibliotek. Modułowe testowanie to najważniejsza funkcja, która oddziela zwykłego programistę od profesjonalisty. Programiści często otrzymują odpo- wiedź za niezapisanie testów modułowych, a najczęstszym uzasadnieniem braku takich testów jest brak doświadczenia i znajomości popularnych modułowych bibliotek bibliotecznych, w tym JUnit, Mockito i PowerMock.

    Istnieje kilka dobrych zewnętrznych bibliotek o ogólnym przeznaczeniu, takich jak Apache Commons i Google Guava, dostępnych dla programistów Java. Upraszczają wiele zadań. Jak sprawiedliwieJoshua Blich powiedział "Efektywna Java", nie ma sensu wymyślać koła, lepiej używać sprawdzonych i przetestowanych modułów zamiast pisać własne podprogramy. Programista Java jest przydatny do zapoznania się z Google Guava i biblioteką Apache Commons.

    Platforma z obsługą HTTP

    Wielu programistów nie lubi braku obsługi HTTP przez JDK. Możesz zainstalować połączenie HTTP za pomocą klasy java.net z bibliotekami open source innych firm, takimi jak Apache HttpClient i HttpCore. Chociaż JDK 9 ma obsługę HTTP 2.0 i ulepszoną obsługę HTTP, eksperci zalecają programistom zapoznanie się z popularnymi bibliotekami klientów HTTP, w tym HttpClient i HttpCore.
    Istnieją biblioteki parsujące XML, w tym Xerces, JAXB, JAXP, Dom4j i Xstream. Xerces2 to nowa generacja wydajnych, w pełni kompatybilnych analizatorów XML z rodziny Apache Xerces. Nowa wersja Xerces prezentuje własne Xerces Interface (XNI), kompletną platformę dla komponentów budowlanych i parsera konfiguracji, która jest niezwykle modułowe i łatwe programowanie. Parser Apache Xerces2 jest referencyjną implementacją XNI, ale inne komponenty konfiguracyjne można zapisać przy użyciu własnego interfejsu Xerces. Dom4j to kolejna elastyczna struktura XML do tworzenia biblioteki Java.
    Programy w świecie rzeczywistym muszą wchodzić w interakcję z pakietem Microsoft Office w takiej czy innej formie. Wiele z nich powinno zapewniać funkcjonalność eksportu danych do Excela, a jeśli potrzebujesz tego z aplikacji Java, potrzebujesz Apache POI API. Jest to bardzo bogata biblioteka, która umożliwia czytanie inapisz pliki XLS z programu java. Jeśli programista zapisuje ramkę, która generuje kod lub współdziała z kodem bajtowym, potrzebuje biblioteki bajtów. Pozwala na odczyt i modyfikację kodu bajtowego wygenerowanego przez program. Niektóre popularne bajty biblioteki to javassist i Cglib Nodep. Program Java Programming Assistant bardzo ułatwia manipulowanie bajtami. ASM to kolejny przydatny moduł do jego edycji.

    Rozpowszechniony format pliku PDF

    Podobnie jak Microsoft Excel, biblioteki PDF są innym powszechnym formatem. Jeśli chcesz obsługiwać funkcję PDF w aplikacji, na przykład eksportować dane do plików PDF, możesz użyć modułów iText i Apache FOP. Oba zapewniają użyteczną funkcjonalność związaną z PDF, ale iText jest lepszy. Do wersji Java 8 moduły danych i czasu JDK miały wady, ponieważ nie były zorientowane na bieżące działania i były obarczone błędami. Programiści Java polegali na JodaTime, aby spełnić wymagania dotyczące daty i czasu. JDK 8 nie ma powodu używać Jody, ponieważ użytkownik otrzymuje te funkcje w nowej dacie i czasie interfejsu API, ale w przypadku starej wersji Javy warto zapoznać się z tą biblioteką. Pomimo faktu, że JDK ma bogatą kolekcję, istnieją moduły stron trzecich, które zapewniają więcej funkcji, takich jak Apache Commons, Goldman Sachs, Google i Treasure Collection. Skarb biblioteczny jest szczególnie przydatny, ponieważ zapewnia szybkie i regularne kolekcje dla Javy. Javax.mail i Apache Commons Email oferują interfejsy API do wysyłania wiadomości e-mail z Java. Jest on zbudowany na bazie interfejsu API JavaMail, który został zaprojektowany w celu uproszczenia pracy.

    Pakiet kryptograficzny kodeków

    Apache Commons zawiera prosty koder idekodery dla różnych formatów, takich jak Base64 i Hexadecimal. Oprócz tych szeroko używanych koderów i dekoderów obsługuje fonetycznych narzędzia kodujące. Biblioteki osadzone bazy danych SQL, takich jak H2, które mogą być osadzone w java-aplikacji, idealny do testowania skryptów SQL i testów jednostkowych run, które wymagają bazy danych. Jednak H2 nie jest jedyną bazą danych, jest również dostępna dla Apache Derby i HSQL. Biblioteki rozwiązywania problemów JDBC zostały zaprojektowane w celu ułatwienia debugowania, na przykład P6spy. Jest to moduł, który pozwala łatwo przechwytywać dane bazy danych i rejestrować je bez zmiany kodu programu. Możesz ich używać do rejestrowania zapytań SQL i ich czasu. Na przykład, jeśli PreparedStatment i CallableStatement używane w kodzie, mogą rejestrować dokładne połączenie biblioteka z parametrów i czasu potrzebnych do wykonania. Google Buffer to metoda kodowania danych strukturalnych w wydajnym, ale rozszerzalnym formacie. Jest to bogatsza i lepsza alternatywa dla serializacji Java. Niektóre przydatne biblioteki sieciowe to Netty i Apache MINA. Jeśli programista pisze program, w którym do wykonywania zadań sieciowych niskiego poziomu, że korzysta z tych modułów.

    biblioteki Java Json

    jest silnym biblioteki JSON serializacji /deserializatsiyi. Możesz znaleźć szczegółowe informacje na temat Jacksona w repozytorium GitHub.
    Jest przewidziane Doug Krokfordom i został wprowadzony w platformie JavaEE 7 w ramach Inicjatywy 353 „Specification Request Java» (JSR) jest autonomiczną i wdrożenie, które mogą być zintegrowane z SE, począwszy od wersji 8. Dziewiąty modyfikacja zapewnia własną obsługę JSON w ramachPropozycja wzmocnienia inicjatywy (JEP) 198. Korzyści Jacksona:
  • Powszechnie stosowane, szczególnie przez społeczność Wiosny.
  • Zapewnia doskonałą funkcjonalność.
  • Działa dobrze przez długi czas.
  • Dobrze wspierane przez aktywną społeczność rozwoju.
  • ​​
  • Ma dobrą dokumentację.
  • Obsługuje fokus dzięki zastosowaniu jednej biblioteki Java /JSON.
  • Oto najważniejsze klasy i metody Jackson, który seryalyzuyut /deseryalyzuyut w JSON:
  • ObjectMapper - projekt przekształca między Java i JSON.
  • ObjectMapper.writeValue - przekształca typ danych w Java JSON w tym przypadku ekranów w Writer.
  • ObjectMapper.readValue - konwertuje JSON na typ danych Java.
  • Wprowadzenie jednego modułu z testów linii poleceń w następujący sposób: Rozdział-4 cd /głośnikami testowa + Gradle testy --tests org.jsonatwork.ch4.BasicJsonTypesTest +

    Książki do nauczania Horstmanna

    Różnorodność bibliotek oprogramowania sprawia, że ​​znalezienie kompleksową ale zwięzły przewodnik do wszystkich funkcji Java SE 9. W tej książce, pomagają Horstmanna szczególnie interesujący początkujących użytkowników dziesiąte wydanie książki Java «Biblioteka zawodowej.” Kay S. Horstmann jest profesorem informatyki na Uniwersytecie Stanowym w San Jose. On jest doświadczonym programistą i profesjonalny konsultant dla dużych korporacji, uniwersytetów i organizacji z Java, C ++, Windows i programowania internetowego. Horstmann jest autorem wielu udanych zawodowych i akademickich książek, w tym „Big C ++”, „C ++ dla wszystkich”, „Big Java”, „projektowanie i wzorów obiektowe”. "Java Professional Library" Cornell Horstmann obejmuje wszystkie ważne aspekty.języki, które musi znać nowoczesny programista, w tym modułowość, a także zaawansowane wyrażenia lambda przedstawione w wersji 8. Przedstawiają one podstawy programowania przy użyciu Javy w bardziej przystępnym i mniej rygorystycznym podejściu. Książka zapewnia bardziej komfortowy i intensywny projekt graficzny, który przekazuje skomplikowane pojęcia w prosty i skuteczny sposób. Różni się od innych książek na rynku, koncentrując się na takich tematach, jak pętle i interfejsy graficzne, unikając orientacji na orientację obiektową. Nacisk kładzie się na proste programy, które wykorzystują wcześniej istniejące struktury danych i algorytmy. Przykłady i studia przypadków uwzględniają praktyczne zastosowania, które mogą być przydatne dla programistów, naukowców i inżynierów, na przykład przetwarzanie danych tabelarycznych, zbieranie informacji w Internecie, biblioteki graficzne Java do tworzenia graficznych obrazów i interfejsów.

    Sposoby poprawy biblioteki produktywności

    JSON jest łatwy w obsłudze i stał się standardowym formatem danych dla praktycznie wszystkiego. Stackify są szeroko stosowane przez JSON dla API REST, serializacji wiadomości w kolejce i innych. Niektóre typowe wskazówki dotyczące wydajności JSON:
  • Użyj wielu bibliotek JSON, aby uzyskać optymalną wydajność i funkcje.
  • Jeśli to możliwe, korzystaj z strumieni.
  • Kompresuj niestandardowy JSON. Ponieważ jest to tylko tekst, możesz liczyć na kompresję do 90%. Dlatego używaj "zip" wszędzie, gdzie to możliwe.
  • Unikaj analizy, jeśli nie jest to wymagane.
  • Wykonajserializacja /deserializacja dużych i mniejszych obiektów JSON. W niektórych przypadkach, gdy trzeba uzyskać tablicę dużych obiektów, jest ona podzielona na mniejsze części.
  • Skonfiguruj JSON Web API Analyzer.
  • Nie serializuj wszystkich pól, wartości pustych lub wartości domyślnych.
  • Użyj krótszych nazw pól.
  • Ręczna serializacja lub parsowanie może być szybsze.
  • Dodatki to w rzeczywistości standardowe programy komputerowe działające na wielu urządzeniach w świecie rzeczywistym. Mają specjalny dostęp do czujników i elementów sprzętowych. W tym celu producenci zapewniają tak zwane biblioteki programistyczne, które umożliwiają stosunkowo łatwy w użyciu sprzęt w programie.

    Powiązane publikacje