Wielka łąka zielonej trawy, czyli… zaczynamy projekt!

Zamknij oczy i wyobraź sobie, że…

Widzisz przed sobą ogromne pole zielonej trawy i tylko od Ciebie zależy co zaczniesz na tym polu budować, w którym miejscu i jak to będzie wyglądało. Nie jesteś ograniczony ani istniejącymi już konstrukcjami, ani ukształtowaniem terenu. Kompletna wolność
Taka sytuacja, to jedna z najprzyjemniejszych chwil w życiu programisty. Ma miejsce na samym początku projektu. Programiści wręcz uwielbiają ten moment. Mogą wtedy wybrać sobie technologie, narzędzia i zabawki, którymi będą się bawić w najbliższym czasie. Po prostu bajka!
Właśnie teraz, przed rozpoczęciem projektu, jestem w takiej sytuacji 🙂 Jedynym wymaganiem jest charakter systemu, czyli aplikacja webowa. Poza tym, mam totalnie wolną rękę.
Co wybrać? W którą stronę pójść? Może Ruby On Rails? Może Python i Django? A może PHP? (Ok, z tym ostatnim to żartowałem 🙂 )
Dodatkowo jestem w tej komfortowej sytuacji, że nie muszę niczego się bać. Firmy, które dostarczają jakiś software dla klienta, muszą wybrać technologię stabilną, sprawdzoną i działającą od lat. U mnie? Tak zwana „wolna amerykanka” 😀

Jedyne założenie

Jedyne co założyłem sobie od razu to język części backendowej – java. Z tą technologią mam styczność praktycznie od samego początku kariery i chciałbym przy tym zostać. I rozumiem, że można nie lubić tego języka, że ma wiele wad i garbage collector, który potrafi zamulić aplikację, to jednak wybrałem go z dwóch powodów:

  1. Czuję się w nim najpewniej i w miarę go znam. Dzięki temu w projekcie pomimo 99% technologii, które będą dla mnie nowe i do nauczenia, będzie choć jedna, której nie będę musiał poznawać prawie od zera.
  2. Chciałbym się jeszcze bardziej wprawić w pisaniu w tym języku. Warto w zawodzie programisty mieć nie tylko jak najszerszą wiedzę, ale również bardzo dobrze znać wybraną technologię.

No dobrze, to mamy Javę, ale co dalej? Dalej pewnie warto pogooglać, sprawdzić z czym inni tę Javę łączą, czy może użyć Springa? A może Jersey’a? Przydałby się też jakich silnik templatów i coś do budowania projektu.
Potem jeszcze trzeba wybrać technologie frontendowe, może Angular, React, Backbone? Fajnie byłoby móc też jakoś zarządzać zależnościami w JavaScripcie.
Pewnie należy też wybrać jakąś bazę danych…
Tak sobie chodziłem po internetach, przeglądałem fora i w końcu odkryłem, że…

Zostanę hipsterem!

I to nie jest żart 🙂 Natrafiłem na projekt o wdzięcznej nazwie JHipster. Chwilę o nim poczytałem i już wiedziałem, że właśnie jego użyję w mojej aplikacji!

Czym jest JHipster? Jest to narzędzie do tzw. scaffoldingu, czyli do automatycznego generowania kodu. W tym przypadku do tworzenia aplikacji opartych o Spring Boot oraz AngularJS. Nie dość, że JHipster dostarczy mi wszystkich narzędzi, których będę potrzebował, to jeszcze spora część kodu zostanie napisana za mnie. Świetna sprawa!

W takim razie jakie technologie wspiera JHipster?

 

stormtroopers_army_logos

 

Całe mnóstwo. Poniżej krótka lista tych najważniejszych:

  • Yeoman – narzędzie do generowania kodu
  • Docker – generowane przez JHipster dockerfile pozwalają na łatwy deployment aplikacji
  • Spring – dobrze znany framework do niemalże wszystkiego. 🙂 (Konkretnie, w JHipster znajdziemy: Spring Boot, Spring Security, Spring MVC REST, Spring Data JPA oraz Spring Websockets)
  • Maven, Gradle – do budowania aplikacji
  • Liquibase – system kontroli wersji dla bazy danych
  • Kafka – message broker w modelu czytelników i pisarzy
  • AngularJS – framework do JavaScriptu. Dostępny zarówno w wersji 1 jaki 2.
  • Twitter Bootstrap – framework ułatwiający projektowanie wyglądu naszej strony
  • Bower, Yarn – do zarządzania bibliotekami w JavaScripcie
  • Gulp.js, Webpack – do budowania i „live reload” naszego frontendu
  • Karma, PhantomJS, Protractor – narzędzia do testowania JavaScriptu
  • Bazy danych SQL (PostgreSQL, MySQL, H2 i inne)
  • MongoDB – nierelacyjna baza danych do przechowywania dokumentów
  • Cassandra – kolumnowa baza danych
  • Elasticsearch – silnik do wyszukiwania

Także sam widzisz, że wybór jest dość spory i każdy znajdzie coś czego potrzebuje 🙂

Zdecydowałem się użyć JHipstera z jeszcze jednego powodu

Pozwoli mi on zaoszczędzić sporo czasu. Dzięki temu będę mógł jeszcze szybciej dostarczyć pierwszą, działającą wersję mojej aplikacji (tzw. MVP) i nie będę poświęcał godzin na konfigurowanie Springa, bazy danych itp. Ułatwi mi to na skoncentrowanie się na implementacji najważniejszych funkcjonalności MoocYourLife. Z mojego punktu widzenia jest to naprawdę ogromna zaleta.

To tyle na dziś. W najbliższym czasie postaram się wybrać z tej listy narzędzia, których będę używał i zaczniemy naszą przygodą z JHipsterem!

Do zobaczenia i…
NIECH KOD BĘDZIE Z TOBĄ

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *