Java библиотека: създаване, обработка, работа с файлове

Java е един от стълбовете на света с отворен код. Всеки от неговите проекти използва други приложения с отворен код, те са достатъчни в мрежата и потребителите не трябва да „преоткриват велосипеда“. Въпреки това, често се случва, че разработчиците се нуждаят от специална Java библиотека за функционалност и нямат представа как да я създадат.

Основни принципи на дизайна

Повторното използване на код е едно от свещените граали на компютърното програмиране. Писането на код, който може лесно да се използва отново, изисква сложни умения, но, разбира се, всеки може да го научи. Java езикът може да помогне за създаването на добра платформа. За тази цел, разработчикът трябва да има основни познания по програмиране, включително способността да създава, компилира и изпълнява прости програми от командния ред.


Няколко основни принципа на добрия дизайн на Java библиотеката:
  • Той трябва ясно да предаде вътрешната си структура по такъв начин, че потребителят да знае как да го използва, дори ако не разбира как работи отвътре.
  • Инкапсулирането е твърдост и усъвършенстване на интерфейсния код, което го прави по-надежден и разбираем.
  • Разширяемостта е създаването на Java библиотека, която изпълнява добре задачата си и осигурява възможност за попълване на липсващите части, за да отговори на нуждите на конкретен разработчик.
  • Наследяване - осигурява начин за задаване на кода, без да е необходимо да се знаят всички детайли на кода,е персонализирано
  • Осигуряване на начин за получаване на информация за отстраняване на грешки от кода - помага на потребителите да открият собствените си грешки.
  • Функционални граници: вход и изход

    Проблемът е, че не всички дизайнери на Java библиотека мислят за своите потребители, как API ще се прилага на практика и как изглежда и тества кодът.


    Границите на функционалност са може би най-важната тема. Добра практика е да се преминат всички зависимости чрез конструкторите и тяхната сбитост с няколко параметъра. Ако имате нужда от конструктор с повече от три или четири параметъра, тогава е ясно, че кодът трябва да бъде реорганизиран. Освен това, разработчиците трябва винаги да предлагат на потребителите повече от един дизайнер. Клиентите трябва да работят със String и Integer, така че да могат да преминават ByteArrayInputStream при оценяване на модули. Например, няколко начина за създаване на входна точка на Github API с помощта на jcabi-github:
  • Github noauth = new RtGithub ();
  • Github basicauth = нов RtGithub ("потребителско име", "парола");
  • Github oauth = нов RtGithub ("токен").
  • Като втори пример, как да работите с charles, Java Professional Library за уеб обхождане, можете да предпишете следното.
    По подразбиране шаблоните не трябва да бъдат игнорирани. Променливата indexPage е URL адресът, от който трябва да бъде обходено съдържанието, а драйверът е използваният браузър. По подразбиране той не може да направи нищо, защото е неизвестно кой браузър е инсталиран на работеща машина. Изходът е необходим предимно за библиотеката, която комуникира с външния свят. Тук трябва да отговорите на въпроса как ще бъдеда бъдат обработени
    За да направите това, трябва да предпишете нещо подобно: WebCrawl graph = new GraphCrawl (); Списък страници = graph.crawl ();

    Интерфейс и трети страни

    Разработчикът трябва винаги да използва интерфейси и потребителят е длъжен да взаимодейства с кода само чрез строги договори. Например в библиотеката jcabi-github класът RtGithub si е единственият, който вижда.
    Горният фрагмент създава приложение в хранилището на eugenp /tutorials. Прилагат се копия от Repo и Issue, но действителните типове никога не се разкриват. Горният сценарий може да бъде решен, но след това разработеният алгоритъм ще бъде замърсен с голям брой стандартен код. Интерфейсите също така осигуряват лесно разширяване и обратна съвместимост. От една страна, от разработчиците се изисква да се придържат към вече издадени договори, а от друга страна, потребителят разширява предложените интерфейси: той може да ги декорира или да напише алтернативни реализации. Една добра библиотека е лесна. Кодът трябва да реши проблема и да функционира. Ако имате нужда от много зависимости. Вероятно предприемачът се опитва да покрие твърде много функции и трябва да прекъсне проекта на няколко малки. Проектът трябва да бъде възможно най-прозрачен. Най-добрият пример е да използвате SLF4J с API за регистриране. Не трябва да log4j директно, може би разработчикът ще иска да приложи други инструменти за регистриране. Свързването на Java библиотеки с документи, които преминават през проекта, преходно изпълнява, че опасни зависимости, като xalan или xml-apis, не са включени. В света има стотици хилядибиблиотеки, но програмистите трябва да знаят само малък брой от най-функционалните модули.

    Библиотека за тестване на модули

    Разработчиците имат много обикновени модули, които се нуждаят във всеки проект. Особено важно за сървърните приложения, защото списанията се поставят само там, където можете да видите какво се случва в тях. Въпреки факта, че JDK идва със собствена библиотека за журналиране, има по-добри алтернативи като Log4j, SLF4j и LogBack. Разработчикът на Java трябва да е запознат с предимствата и недостатъците на библиотеките на списанията и да знае защо използването на SLF4j е по-добро от просто Log4j.
    В съвременния свят на уеб услугите и IoT, JSON се превърна в протокол за прехвърляне на информация от клиент на сървър. Той замени XML като най-подходящия начин за предаване на информация, независимо от платформата. За съжаление JDK няма библиотека JSON. Но има много добри модули на трети страни, които ви позволяват да анализирате и създавате съобщения, като например Джаксън. Уеб разработчикът трябва да е запознат с поне една от тези библиотеки. Модулното тестване е най-важната характеристика, която отделя редовния разработчик от професионалист. Програмистите често са простени за това, че не успяват да напишат модулни тестове, а най-разпространеното оправдание за липсата на такова тестване е липсата на опит и познания за популярните библиотеки от модулни библиотеки, включително JUnit, Mockito и PowerMock.

    Има няколко добри библиотеки от трети страни с общо предназначение, като Apache Commons и Google Guava, достъпни за разработчиците на Java. Те опростяват много задачи. Колко справедливоJoshua Blich каза "Ефективна Java", няма смисъл да преоткриваме колелото, по-добре е да използваме доказани и тествани модули, вместо да пишем свои собствени подпрограми. Разработчикът на Java е полезен за запознаване с Google Guava и библиотеката Apache Commons.

    Платформа с HTTP поддръжка

    Много разработчици не харесват липсата на HTTP поддръжка от JDK. Можете да инсталирате HTTP връзка, като използвате класа java.net на библиотеки от отворен код на трети страни, като Apache HttpClient и HttpCore. Въпреки че JDK 9 има HTTP 2.0 поддръжка и подобрена HTTP поддръжка, експертите препоръчват разработчиците да се запознаят с популярните библиотеки на HTTP клиенти, включително HttpClient и HttpCore.
    Има библиотеки за синтактичен анализ на XML, включително Xerces, JAXB, JAXP, Dom4j и Xstream. Xerces2 е ново поколение високопроизводителни, напълно съвместими XML анализатори в семейството на Apache Xerces. Новата версия на Xerces представя своя собствен Xerces интерфейс (XNI), пълна платформа за създаване на компоненти и конфигурации на парсера, който е изключително модулен и лесен за програмиране. Анализаторът на Apache Xerces2 е референтна реализация на XNI, но други конфигурационни компоненти могат да бъдат написани с помощта на собствения им интерфейс Xerces. Dom4j е друга гъвкава XML структура за създаване на Java библиотека.
    Програмите от реалния свят трябва да взаимодействат с Microsoft Office в една или друга форма. Много от тях трябва да предоставят функционалност за експортиране на данни в Excel и ако трябва да направите това от Java приложение, трябва да имате API на Apache POI. Това е много богата библиотека, която ви позволява да четете инапишете XLS файлове от java програмата. Ако програмист пише рамка, която генерира код или взаимодейства с байт-код, тогава той се нуждае от библиотека с байтове. Тя ви позволява да четете и променяте байтовия код, генериран от програмата. Някои от популярните байт библиотеки са javassist и Cglib Nodep. Помощникът по програмиране на Java прави манипулирането на bytecard много лесно. ASM е друг полезен модул за редактиране.

    Широко разпространения формат на PDF

    Подобно на Microsoft Excel, PDF библиотеките са друг общ формат. Ако искате да поддържате функционалността на PDF в приложението, например да експортирате данни в PDF файлове, можете да използвате iText и Apache FOP модулите. И двете предоставят полезна функционалност, свързана с PDF, но iText е по-добър. До Java 8, данните и времевите модули на JDK имаха недостатъци, защото не бяха ориентирани към момента и бяха обект на грешки. Java разработчиците разчитат на JodaTime, за да отговорят на изискванията на датата и часа. JDK 8 няма причина да използва Joda, защото потребителят получава тези функции в нова дата и час на API, но за старата версия на Java си струва да се проучи тази библиотека. Въпреки факта, че JDK има богата колекция, има модули на трети страни, които предоставят повече функции, като Apache Commons, Goldman Sachs, Google и Съкровищницата. Библиотечното съкровище е особено полезно, защото осигурява високоскоростни редовни и примитивни колекции за Java. Javax.mail и Apache Commons Email осигуряват API за изпращане на електронна поща от Java. Той е изграден върху JavaMail API, който е предназначен да опрости работата.

    Криптографски пакет от кодеци

    Apache Commons съдържа прост енкодер идекодери за различни формати, като Base64 и Hexadecimal. В допълнение към тези често използвани енкодери и декодери, той поддържа набор от фонетични кодиращи програми. Библиотеките на вградени SQL бази данни, като H2, които могат да бъдат вградени в Java приложението, са чудесни за тестване на SQL скриптове и изпълнение на модулни бенчмаркове, които изискват база данни. Въпреки това, H2 не е единствената база данни, тя е достъпна и за Apache Derby и HSQL. Библиотеките за отстраняване на неизправности с JDBC са предназначени да улесняват отстраняването на грешки, например P6spy. Това е модул, който ви позволява лесно да прекъсвате база данни и да го регистрирате, без да променяте програмния код. Можете да ги използвате, за да регистрирате SQL заявки и тяхното време. Например, ако използвате PreparedStatment и CallableStatement в кода, тези библиотеки могат да регистрират точния разговор с параметрите и времето, необходимо за изпълнение. Google Buffer е начин за кодиране на структурирани данни в ефективен, но разширяем формат. Това е по-богата и по-добра алтернатива на Java сериализацията. Някои от полезните мрежови библиотеки са Netty и Apache MINA. Ако разработчикът напише програма, в която да изпълнява задача от ниско ниво, тогава той използва тези модули.

    Java Json Libraries

    Има надеждни JSON библиотеки за сериализация /десериализация. Можете да намерите подробности за Джаксън в хранилището на GitHub.
    Той беше предоставен от Дъг Крокфорд и беше въведен в платформата JavaEE 7 като част от Java Specification Request 353 инициатива (JSR) и е автономна реализация, която може да се интегрира с SE, като се започне с версия 8. Деветата модификация осигурява собствена подкрепа за JSON. в рамкитеПредложение за подобряване на инициативите (JEP) 198. Ползи от Джаксън:
  • Широко използвано, особено от пролетната общност.
  • Осигурява отлична функционалност.
  • Работи добре за дълго време.
  • Добре подкрепяна от активна общност на развитие.
  • ​​
  • Има добра документация.
  • Поддържа фокуса, като следва една Java /JSON библиотека.
  • Ето най-важните класове и методи на Джексън, които сериализират /десериализират в JSON:
  • ObjectMapper - Конструира Java и JSON.
  • ObjectMapper.writeValue - Конвертира типа данни на Java в JSON и в този случай изходи от Writer.
  • ObjectMapper.readValue - Преобразува JSON в типа данни на Java.
  • Изпълнете тест на единична единица от командния ред, както следва: cd chapter-4 /speaker-test + gradle test - тестове org.jsonatwork.ch4.BasicJsonTypesTest +

    Преподавателски книги на Horstmann

    Разнообразието от библиотеки принуждава програмистите да намерят изчерпателен, но кратък справочник за всички функции на Java SE 9. Това е, което те помагат с книгата на Horstmann, особено интересна за начинаещите до десетото издание на книгата "Java Professional Library". Кей С. Хорстман е професор по компютърни науки в Държавния университет на Сан Хосе. Той е опитен професионален програмист и консултант за големи корпорации, университети и организации от Java, C ++, Windows и програмиране в интернет. Horstmann е автор на много успешни професионални и академични книги, включително Big C ++, C ++ за всички, Big Java, Object Oriented Design и Templates. „Професионалната библиотека на Корнел Хорстман“ обхваща всички важни аспекти.езиците, които съвременният разработчик трябва да знае, включително модулността, както и мощните ламбда-изрази, които са представени във версия 8. \ t Те очертават основите на програмирането, използвайки Java в по-достъпен и по-малко строг подход. Книгата осигурява по-удобен интензивен графичен дизайн, който предава сложни концепции просто и ефективно. Тя се различава от другите книги на пазара, като се фокусира върху теми като цикли и графични интерфейси, като същевременно се избягва ориентацията към обектна ориентация. Акцентът е върху прости програми, които използват предварително съществуващи структури и алгоритми за данни. Примери и казуси разглеждат практически приложения, които могат да бъдат полезни за програмисти, учени и инженери, например, обработка на таблични данни, събиране на информация в интернет, графични библиотеки на Java за създаване на графични изображения и интерфейси.

    Начини за подобряване на продуктивността на библиотеката

    JSON е лесен за работа и е станал стандартен формат за данни за почти всичко. Stackify се използва широко от JSON за REST API, сериализиране на съобщения в опашка и др. Някои общи съвети за производителност на JSON:
  • Използвайте множество библиотеки JSON за оптимална производителност и функции.
  • Използвайте потоци винаги, когато е възможно.
  • Компресирайте персонализирания JSON. Тъй като това е просто текст, можете да разчитате на компресия до 90%. Затова използвайте "zip", където е възможно.
  • Да се ​​избягва анализ, ако не се изисква.
  • Извършетесериализация /десериализация на големи и по-малки JSON обекти. В някои случаи, когато трябва да получите масив от големи обекти, той се разбива на по-малки парчета.
  • Конфигурирайте анализатора на JSON Web API.
  • Не сериализирайте всички полета, нулеви стойности или стойности по подразбиране.
  • Използвайте по-кратки имена на полета.
  • Ръчната сериализация или анализиране могат да бъдат по-бързи.
  • Добавките са всъщност стандартни компютърни програми, работещи на много устройства в реалния свят. Те имат специален достъп до сензори и хардуерни контроли. За тази цел производителите предоставят така наречените програмни библиотеки, които позволяват сравнително лесен за използване хардуер в програмата.

    Свързани публикации