JavaRush /Blog Java /Random-PL /Poradnik dla przyszłego programisty Java. Przedsiębiorstw...
Diana
Poziom 41

Poradnik dla przyszłego programisty Java. Przedsiębiorstwo – część 1

Opublikowano w grupie Random-PL
„Nie bądź zbyt dumny z tych osiągnięć technologicznych, które zbudowałeś. Możliwość zniszczenia planety jest niczym w porównaniu z siłą Mocy.” – Darth Vader o Gwieździe Śmierci. Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 1

Wprowadzenie

Prawdopodobnie dwie kolejne części cyklu artykułów są dla wielu najbardziej wyczekiwane i nie bez powodu. Co jest poza horyzontem, poza czystą Jawą? Czym oddychają programiści Java w każdym projekcie? Potraktuj to jako prawdziwy, kompletny podręcznik do samodzielnej nauki dla każdego przeciętnego inżyniera back-endu, którego głównym językiem programowania jest Java. Zamierzam w jak największym stopniu pokryć średnią szpitalną i opisać nie tylko najpopularniejsze frameworki, ale także rozwiązania, które są uważane za istotne w danym momencie. Narzędzi jest oczywiście mnóstwo, a zrozumienie, które z nich są najważniejsze, a które najlepsze, to droga donikąd. Każdy z Was przejrzał sekcję „Praca” w DOU i znalazł stos technologii, które stale się powtarzają od wakatu do wakatu. Rozumiem, że nie da się opisać wszystkiego, ale wymyślenie ogólnych ram jest w porządku, więc spróbujmy podążać w tym kierunku. Jakoś w przeszłości podczas jednego z projektów doszło do dość interesującego zawstydzenia, które, jak sądzę, było i powtarza się od czasu do czasu dla wielu w tym czy innym obszarze. Zadanie polegało na dołączeniu renderu jednej strony HTML do gotowej funkcjonalności, aby po prostu pokazać stan poszczególnych encji. W rezultacie mój kolega zdecydował się dołączyć wiosenny tymeleaf, który wyciągnął część podstawowych zależności samego Springa, kiedy nikt nie korzystał ze Springa. A to wszystko dla jednej zwykłej strony, która po prostu pokazuje status 2-3 podmiotów. „Nigdy nie widziałem większego sensu w używaniu dwóch mieczy świetlnych… moim zdaniem to popis” – Obi-Wan Kenobi. Z jednej strony programista rozwiązał problem tak szybko, jak to możliwe, zainstalował framework, z którym miał doświadczenie w obsłudze i zintegrował go z projektem w ciągu kilku godzin. Ale z drugiej strony nasz program powiększył się, więc proste pytanie brzmi: czy postąpił słusznie? W przypadku takich zadań atomowych, gdy wiesz na pewno, że ten thymeleaf/Spring MVC itp. jest większy. Nie będzie nigdzie używany, lepiej w ogóle go nie używać. Zawsze dziwią mnie zwroty typu „Och! Tak, użyliśmy tutaj Hibernacji! Słuchajcie, wszystko w porządku, ORM!”, a na logiczne pytanie, czy da się tu obejść się na zwykłym JDBC, wzruszają ramionami. Istnieje zwyczajna architektura, która powinna być prosta, do której należy podchodzić z niepokojem, a nie zaśmiecona modnymi i supernowoczesnymi frameworkami. Jak powiedział wyżej Obi-Wan, jest to nic innego jak popisywanie się, choć trzeba wiedzieć, jak z nich korzystać. Moim zdaniem młody Javaista ma największego pecha ze wszystkich - tyle specyfikacji, tyle bibliotek, które trzeba przestudiować. Sama Java EE ma dokumentację aż po dach. Powstaje pytanie, czego powinien się podjąć początkujący, czego powinien się uczyć dalej, co powinien robić po Horstmannie? Prosta odpowiedź: niestety, spotykam wielu ludzi. I zaczniemy nie od ram biznesowych, ale od bardziej przyziemnych, niezbędnych rzeczy.

System operacyjny

Linuksa

Oprócz Windowsa i/lub przytulnego Yosemite, z uśmiechem trzeba sięgnąć po Linuksa. W przypadku niektórych projektów wystarczy być użytkownikiem i wiedzieć, jak korzystać z wiersza poleceń, dla innych - znacznie więcej. Która metoda jest najlepsza? W Internecie jest po prostu mnóstwo książek/poradników. Zacznij od zainstalowania Ubuntu lub dowolnej innej dystrybucji, którą lubisz i spróbuj używać go jako głównego systemu operacyjnego przez następny miesiąc lub dwa. Będzie znacznie lepiej, jeśli zaczniesz uczyć się Java w Linuksie, kompilując i manipulując plikami za pomocą terminala. Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 2Wiersz poleceń systemu Linux autorstwa Williama Shottsa . Przeczytaj tę książkę nie jako powieść „50 twarzy Greya”, ale jako pełnoprawny kurs interaktywny - otwórz terminal i powtarzaj za autorem. Czy chcesz poznać podstawy i dowiedzieć się, jak działa Linux? Nie bierzmy się za kurs informatyki i systemów operacyjnych – o tym w następnej części. Wejdź na edx.org i wypróbuj łatwy kurs Wprowadzenie do Linuksa . Dostępna jest także książka z wyżej wspomnianej serii Jak działa Linux: Co każdy superużytkownik powinien wiedzieć autorstwa Briana Warda . Dość ilustrowana publikacja, która zwraca uwagę na sieci, urządzenia i zarządzanie zasobami. Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 3Zacząć robić? Jest taka świetna książka, którą, swoją drogą, mam tu gdzieś... tak (otrząsa kurz)... tutaj jest! Unix i Linux: Podręcznik administratora systemu. Evi Nemeth. Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 4Dość obszerna instrukcja, dobrze przetłumaczona. Szczerze mówiąc, osobiście tego nie opanowałem, ale bardzo podobały mi się podstawy administracji (część pierwsza). Oczywiście nie można zignorować skryptów Shell. Lepiej spróbować tego wszystkiego w praktyce, ale z książek możesz zajrzeć do Nauka powłoki bash: Programowanie powłoki Unix autorstwa Camerona Newhama. Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 5Tak ogromnej ilości literatury na temat Linuksa/Unixa nie da się omówić w całości, szczególnie w tym artykule, gdzie Linux jest w tle. Mój kolega w pracy, który zjadł psa w tej sprawie, poradził mi dość praktyczną rzecz: pobierz ArchLinux i spróbuj go uruchomić. W trakcie dowiesz się tego, czego nie chcę!

Okna

W życiorysach programistów znajduje się rubryka: „Doświadczenie w systemie Windows od ponad 10 lat”. Oczywiście gratuluję Ci tego, że grasz w kontrę od 10 roku życia na Windowsie, ale proszę Cię, żebyś nie kopał sobie dziury przed rozmową kwalifikacyjną, bo przy projekcie, w którym blisko współpracujesz IIS, wsad/powershell, nie daj Boże, rejestr, rozmowa kwalifikacyjna nie będzie naprawdę trudna, a poza tym uśmiech naprzeciw siedzącej osoby. Lida Ty też otrzymasz dawkę upokorzenia. Potrzebujesz to? Odpowiedź nasuwa się sama. Odłóż piracki system Windows z torrenta i spróbuj zainstalować go na jakiejś maszynie wirtualnej z systemem Windows Server. Przestudiuj to nie tylko od strony użytkownika i instalacji JAVA_HOME. W związku z tym istnieje prawie kompletny przewodnik w formie książki Mastering Windows Server 2012 R2 autorstwa Marka Minasi . Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 6Na przykład, jeśli używasz programu PowerShell, zapoznaj się z doskonałą książką Windows PowerShell w działaniu autorstwa Manninga autorstwa Bruce'a Payette'a . Rozumiem, że nie da się przejść przez 1000 stron, ale przynajmniej możesz mieć to przy sobie jako punkt odniesienia. Myślę, że nic więcej nie jest potrzebne. Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 7W rezultacie zwróć uwagę na luki w swojej wiedzy na temat obsługi systemu Windows i szukaj interesujących Cię informacji w Internecie.

Narzędzia do budowania

Mavena

Co jest najważniejszą rzeczą do zrozumienia w Mavenie? Oto pierwsze kroki i zadania:
  1. Dowiedz się, co Maven robi w każdej fazie, możesz nawet zapamiętać. To prawie 80% sukcesu i daje jasny obraz.
  2. Twórz lokalnie własne projekty piaskownicy za pomocą systemu wielomodułowego z jawnym zarządzaniem zależnościami. Spróbuj dołączyć biblioteki innych firm, spróbuj stworzyć coś przy ich użyciu.
  3. Pobaw się profilem
  4. Zapoznaj się z zarządzaniem wtyczkami i przestudiuj listę najpopularniejszych wtyczek na oficjalnej stronie internetowej.
  5. Dowiedz się, jak najlepiej wykorzystać Mavena w swoim projekcie. Na przykład kompilacje równoległe mogą znacznie skrócić czas kompilacji.
Aby szybko się zapoznać, przejdź do rosyjskiej wersji witryny Apache Maven i przeszukaj kilka samouczków w Google. Mimo to trzecie wydanie jednej z głównych książek o Mavenie nie zostanie wydane. Jak dotąd jest to drugie wydanie Maven: The Definitive Guide firmy Sonatype . Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 8Na poziomie zaawansowanym odpowiednie jest utworzenie własnej wtyczki. Nie martw się, jaki rodzaj wtyczki musisz utworzyć, ponieważ wiele z nich już istnieje! Spróbuj stworzyć jakiś analog, przestudiuj fazy jako dwa i dwa.

MRÓWKA

To narzędzie wygląda na znacznie łatwiejsze, więc nie ma tu zbyt wiele do nauczenia się. Nadal istnieją projekty, w których ANT jest jedynym narzędziem do kompilacji. Jest to całkowicie normalne: ANT okazał się prostym i bezpośrednim narzędziem do budowania w kontekście zarządzania małymi zadaniami atomowymi (zadaniami mrówek). Oczywiście jest tu wiele wtyczek, podobnie jak Maven. Aby rozpocząć korzystanie z ANT, wykonaj następujące czynności:
  • Spróbuj manipulować plikami i folderami
  • Wdrażaj różne kolejności wykonywania zadań. Na tej podstawie poznaj zależności i priorytety zadań w ANT.
  • Rozpakuj i/lub spakuj archiwum. W zadaniach spróbuj pobawić się zawartością archiwum i tak dalej.
Nie ma potrzeby oferowania mnóstwa zasobów do nauki ANT. Do mniej lub bardziej głębokiego nurkowania wystarczy oficjalna strona Apache Ant. ( ant.apache.org ) i książki Ant in Action autorstwa Steve'a Loughrana . Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 9

Gradle

Dla mnie Gradle jest bliższy ANTowi niż Mavenowi, ale w pełni można go nazwać przyrodnim bratem tej dwójki. Ma cykl życia podobny do Mavena i elastyczność tych samych zadań, co ANT. Cóż, najważniejsze jest to, że Gradle nie korzysta z XML-a, a ponadto możesz z nim zrobić, co chcesz, jeśli znasz Groovy mniej lub bardziej. Ogólnie całkiem smaczna rzecz. Nie bój się używać Ant/Maven/Gradle w kontekście swojego IDE. Narzędzia te są ściśle zintegrowane z Eclipse/IDEA, a używanie ich w kontekście IDE jest całkiem wygodne.

Ciągła integracja

Teoria

Są to programy aniołów, które chronią Cię przed zwolnieniem. W skrócie jest to oprogramowanie, które monitoruje zmiany w kodzie, buduje i uruchamia napisane dla Ciebie testy. Jeśli po każdym zatwierdzeniu/scaleniu wszystko jest w porządku, kompilacja świeci przyjemnym zielonym/niebieskim światłem. Gdy tylko coś zepsujesz, system CI natychmiast to zgłosi. Jednak trochę teorii – to klasyka! Ciągła integracja: poprawa jakości oprogramowania i zmniejszenie ryzyka autorstwa Paula Duvalla . (po rosyjsku „Ciągła integracja”) Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 10W tej książce omówiono nawet tworzenie własnego systemu CI. Przyjrzyjmy się dwóm najpopularniejszym rozwiązaniom w tym obszarze.

Jenkinsa

Jenkinsa, czyli Hudsona. Otwarta, przyjazna i łatwa w obsłudze aplikacja. Aby lepiej poznać Jenkinsa, spróbuj wykonać następujące czynności:
  1. Pobierz go na swój komputer. Zainstaluj i skonfiguruj JDK, Maven, ANT i wszystko, czego potrzebujesz do projektu.
  2. Utwórz pierwszą pracę i określ lokalizację swojego projektu, na przykład główny plik pom.xml. Uruchom go, upewnij się, że masz jakiś test, aby był wyraźnie widoczny.
  3. Naucz się uruchamiać swój projekt z różnymi ustawieniami i opcjami.
  4. Dołącz różne wtyczki i zobacz, jak działają w połączeniu z Twoim projektem.
  5. Konstruuj wyzwalacze dla różnych zadań. Utwórz mały potok.
  6. Poznaj technologię DSL i spróbuj zintegrować ją z Jenkinsem.
  7. Skonfiguruj urządzenie podrzędne z innego komputera i/lub uczyń go zwykłą maszyną do uruchamiania kompilacji.
  8. Twórz nocne kompilacje.
Z książek po prostu przeczytaj Jenkins: The Definite Guide autorstwa Johna Fergusona Smarta . Przejrzysty przewodnik z dużą ilością zrzutów ekranu. Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 11

TeamCity

Tak, TeamCity nie jest darmowe, ale spójrz, jak dobrze jest zintegrowane z ekosystemem produktów JetBrains. Intellij Idea i TeamCity to świetny związek. Ogólnie rzecz biorąc, jeśli znasz już Jenkinsa, TeamCity nie będzie dla ciebie ciemnym lasem i odwrotnie. Zamiast niewolników - agenci, te same wyzwalacze i tak dalej. Ale w przeciwieństwie do Jenkinsa, TeamCity może poszczycić się tak niesamowitymi funkcjami, jak na przykład zdalne uruchamianie, znane również jako wstępnie przetestowane zatwierdzanie, znacznie więcej statystyk wizualnych i wiele więcej. Bardzo podoba mi się podręcznik użytkownika na YouTube, który sam JetBrains stworzył ( Podręcznik użytkownika TeamCity (część 1 z 9) - Wprowadzenie ). Uważam, że TeamCity jest intuicyjne, a dokumentacja na wysokim poziomie. Jeśli jednak uważasz, że jest to książka warta uwagi, zostaw ją w komentarzu. Oczywiście wymieniłem tylko niewielką część tych systemów CI, ale mamy wszystko w ograniczonym zakresie. Prawdopodobnie najlepszym przewodnikiem do nauki jest praktyka. Zainstalowałem go na komputerze, uruchomiłem, zawiesiłem/przywróciłem kompilacje i poszedłem spać. A potem możesz mi bezpiecznie przynieść księgę metrykalną (jeśli chcesz :).

System kontroli wersji

Nie ma sensu dużo mówić o VCS. To po prostu coś, co powinno być i bez czego zarządzanie projektami przypominałoby erę mezozoiczną. Podobnie jak w przypadku systemów CI, przyjrzyjmy się dwóm najpopularniejszym rozwiązaniom: Git i SVN.

Git

Nasz Git sprawdził się jako stabilny rozproszony system kontroli wersji. Rozpocznij naukę od tego miejsca i przejrzyj wszystkie rozdziały, mając już skonfigurowanego Gita. Następnie jest wspaniała seria interaktywnych samouczków od Code School. Jest też od nich krótki przewodnik o nazwie Try Git: Code School . Z książek mogę polecić Kontrolę wersji z Git autorstwa Jona Loeligera. Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 12 Jeśli jesteś przyzwyczajony do żółwia (TortoiseSVN, przyp. autora) i boisz się konsoli, możesz oczywiście pobrać jego analogowy TortoiseGit, ale moim zdaniem znacznie przyjemniejsze i bardziej estetyczne Rozwiązaniem jest produkt firmy Atlassian - SourceTreeApp. Możesz ćwiczyć ze zdalnymi repozytoriami, ponieważ w Internecie jest wystarczająco dużo usług hostów. Jeśli chcesz, trenuj lokalnie. NIE? Następnie utwórz konto na GitHubie i pracuj w trybie pełnym: wykonaj kilka zatwierdzeń, rozwidl jakiś projekt open source, wykonaj kilka łączeń między gałęziami i tak dalej.

SVN

Innym równie popularnym VCS jest SVN. System ten nie może pochwalić się dystrybucją. Każdy z nich ma swoje własne podejście, swoje zalety i wady. Koniecznie przeczytaj interesującą rozmowę pomiędzy nowicjuszem a użytkownikiem SVN . Na stronie read-bean.com dostępna jest bezpłatna książka z tłumaczeniem na język rosyjski. Niezwykle przydatny będzie także minikurs od TutorialsPoint . Nie przegap oficjalnej strony internetowej Apache, subversion.apache.org . Najciekawszym dla mnie klientem jest wspomniany wcześniej TortoiseSVN. Wśród książek można wyróżnić: Kontrola wersji z Subversion autorstwa Michaela Pilato . Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 13Podobało mi się, ponieważ zwraca uwagę na administrację samego serwera SVN. Mam nadzieję, że nie przeoczyłem najważniejszych punktów.

Narzędzia do testowania

W małych projektach typu sandbox dobrym pomysłem byłoby zrozumienie, czym są testy jednostkowe, testy integracyjne i regresyjne. JUnit Teorię testów jednostkowych dobrze opisano w książkach z poprzedniego artykułu. W szczególności Clean Code opisuje nawet junit jako jedną z popularnych bibliotek w tej dziedzinie. Ale jeśli chodzi konkretnie o JUnit, jest świetna mała książeczka zatytułowana Praktyczne testowanie jednostek za pomocą JUnit i Mockito autorstwa Tomka Kaszanowskiego Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 14 . Oczywiście jest w niej coś więcej niż tylko JUnit i Mockito. Tutaj autor przedstawia Matchery, podaje przykłady sparametryzowanych testów i krótko omawia TDD. Jest też książka, która ukazała się całkiem niedawno. To jest Pragmatic Unit Testing in Java 8 autorstwa Jeffa Langra. Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 15 Autor przedstawia Hamcresta, opisuje Best Practices i oczywiście Javę 8. Można śmiało czytać po książce Tomka. Nawiasem mówiąc, jeśli chodzi o TDD. Nie chcę podnosić holivara na temat tego, czy warto z nich korzystać, czy to dobrze, czy źle, czy klienci ich potrzebują. Tylko pamiętajcie: praca w TDD nie jest nowością i wiele projektów wykorzystuje tę metodologię, a dla wielu osób jest to jedyna i niepodważalna zasada. Teoretycznie można czytać klasykę. Kent Beck — Rozwój oparty na testach: na przykładzie . Najbardziej podobała mi się część dotycząca wzorców TDD. Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 16Co zaskakujące, istnieje dobry kurs pierwszoosobowy - Let's Play TDD (200 filmów!) na Youtube. Nie mniej interesująca jest dyskusja Fowlera na temat tego, czy warto używać TDD, czy psuje to projekt i tym podobne. Pamiętaj tylko o tym raz na zawsze: TDD nie tworzy złego projektu, ty go tworzysz. Jeśli częściej korzystasz z BDD (jedno nie koliduje z drugim) i np. używasz w projekcie Cucumbera, to jest to nieco inna płaszczyzna. Dobrą książką na ten temat jest Manning BDD w działaniu: rozwój oparty na zachowaniu dla całego cyklu życia oprogramowania autorstwa Johna Fergusona Smarta . Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 17Nawiasem mówiąc, John Ferguson Smart aktywnie promuje ten temat wśród mas. Jeśli jesteś Scrum Masterem lub PM, który w końcu nie męczy oczu, ale lubi oglądać testy typu „kiedy-to”, to koniecznie śledź Johna na Twitterze . Jeśli chodzi o Cucumber, spójrz na implementację Java na oficjalnej stronie internetowej i przeczytaj książkę The Cucumber Book: Behaviour-Driven Development autorstwa Matta Wayne'a . Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 18

Biblioteki stron trzecich

Ważne jest, aby w razie potrzeby móc korzystać z popularnych bibliotek - upraszczają one codzienne życie każdego programisty Java. Do popularnych rozwiązań należą: Joda Time. Oferuje całkowite zastąpienie niewygodnej natywnej daty i godziny wygodniejszym JodaTime. Oto jedno dobre odniesienie . Pamiętaj, że jeśli używasz już Java 8, JodaTime nie będzie zbyt pomocny. Faktem jest, że nowe API DateTime całkowicie zastąpiło tę bibliotekę, a w niektórych miejscach nawet sprytnie ją skopiowało i wkleiło. Według artykułu autora każdą klasę Jody można wygodnie zastąpić analogiem z java.time. Google Guawa. Pod wieloma względami Java 8 zastępuje nawet Guawę. Te same obiekty, Stream API, Java Predicate i wiele innych rzeczy sugerują jego wymianę i nieużywanie go w ogóle. Powtarzam, jeśli nie masz Java 8, nie ma nic lepszego niż ten przewodnik i Twoje bezpośrednie ręce.

Apache Commons

Z tym potworem nie jest tak łatwo sobie poradzić: około 40 bibliotek na każdą okazję, od dobrze znanego sprawdzania poprawności commons.lang po xml, od DBUtils po commons.io . Oczywiście nie trzeba znać wszystkiego, ale warto mieć przy sobie książki kucharskie i tutoriale. Na przykład, aby zrozumieć, o co chodzi w Apache Commons, możesz przejrzeć książkę kucharską Jakarta Commons autorstwa Timothy'ego O'Breina Poradnik dla przyszłego programisty Java.  Przedsiębiorstwo - część 1 - 19

Wniosek

Enterprise jest tak rozległy, że głupio byłoby rozpoczynać dyskusję na temat JavaEE i innych frameworków bez wszystkiego, co otacza to Enterprise. Dlatego w drugiej części skupimy się na każdej warstwie architektury wielowarstwowej, rozważymy usługi i tak dalej. Dziękuję bardzo za uwagę. Koniec pierwszej części. Poprzednie części serii:
  1. Poradnik dla przyszłego programisty Java. Podstawy Javy
  2. Poradnik dla przyszłego programisty Java. Elegancki kod
Oryginał z DOU
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION