niedawno rozmawiałem z przyjacielem o rozwoju UI. Był również programistą, ponieważ programowanie było uważane za tajemną sztukę (kiedy ci z nas, którzy to zrobili, byli uważani za Gandalfa szarego stojącego przed Balrogiem). A może po prostu tak się postrzegaliśmy. Niezależnie od tego, oboje byliśmy programistami Javy przez wiele tego czasu.
oboje ubolewaliśmy nad faktem, że był to przełącznik kontekstowy do przejścia od kodowania większości naszych projektów w Javie, a następnie do przełączania na JavaScript dla interfejsu.
opierając się na rozmowach, które widziałem w Internecie, kilku czytelników rozgrzewa swoje klawiatury, aby skarżyć mnie za narzekanie na konieczność kodowania w JavaScript. Keep your keys cool, zarówno my, jak i nasi współpracownicy jesteśmy doświadczeni w JavaScript i chętnie piszemy dla naszych klientów. Ale używanie JavaScript nie zawsze jest najlepszym podejściem.
w tym poście przedstawiamy dwa frameworki, które umożliwiają kodowanie interfejsu użytkownika w Javie: GWT i Vaadin.
kiedy używać Javy do swojego interfejsu użytkownika?
rozmowa wróciła do mnie, gdy rozmawiałem z klientem — małym sklepikiem z zaledwie kilkoma programistami i architektem oprogramowania, który również programował. Zdecydowali, że nie chcą utrzymywać swoich projektów w dwóch oddzielnych językach. Ich firma ustandaryzowała Javę i chcieli użyć tych samych narzędzi i sposobu myślenia, aby stworzyć wydajne i nowoczesne interfejsy użytkownika dla swoich aplikacji internetowych.
zauważyłem w większych zespołach, że zespół wydaje się rozdzielać, niektórzy wolą skoncentrować się na front-endzie, a inni pracują głównie nad kodem zaplecza lub po stronie serwera. Kiedy praca jest zatwierdzona do rozwoju, często widzę, że ci sami programiści biorą lub otrzymują większość front-endowej pracy JavaScript, a inni biorą back-end.
nie twierdzę, że jest to zła rzecz, w rzeczywistości wydaje się być wręcz przeciwnie. Każdy wydaje się być bardziej produktywny w swojej strefie komfortu, ale każdy jest również świadomy tego, co robią inni i może wkroczyć do tej strefy, jeśli zajdzie taka potrzeba. W przypadku mniejszych sklepów nie jest to opcja. Często ten sam programista napisze kod całego projektu od interfejsu użytkownika do modelu.
na szczęście istnieje możliwość wyboru, jeśli chcesz zachować interfejs użytkownika w tym samym języku, co zaplecze, jeśli tym językiem jest Java. Porozmawiajmy teraz o kilku z nich.
GWT
Google Web Toolkit lub GWT to doskonała opcja.
miałem wiele sukcesów z GWT w projekcie, który rozpocząłem około 8 lat temu i nadal utrzymuję. GWT pozwoliĹ 'mi zbudowaÄ ‡ logikÄ ™ widoku dla Jednostronicowej aplikacji caĹ’ kowicie w standardowym kodzie Java. Jest dostarczany z wtyczką Eclipse. Nie używałem go, ponieważ używałem Netbeans do mojego środowiska programistycznego, ale ponieważ Eclipse jest standardem dla większości zespołów, może to być bardzo przydatne.
udało mi się rozbić logikę widżetów (takich jak niestandardowe pole tekstowe), na klasy lub metody pomocnicze, tak samo jak logikę biznesową w projekcie po stronie serwera. Dzięki dziedziczeniu udało mi się łatwo utworzyć kilka widżetów, które miały podobne wymagania. Jedyną prawdziwą koncepcją zmian, z którą miałem do czynienia, było to, że interfejs użytkownika jest znacznie bardziej oparty na zdarzeniach niż większość usług internetowych lub inny kod po stronie serwera.
widzę dwa podstawowe wady GWT. Jednym z nich jest czas kompilacji. GWT dodaje krok kompilacji do procesu, który zajmuje trochę czasu. Klasy GWT, które zostały zbudowane w Javie, muszą być skompilowane do bibliotek JavaScript. Widziałem kilka skarg dotyczących czasu, jaki to zajmuje.
po drugie, minęło sporo czasu, odkąd GWT doczekało się znaczącej aktualizacji. W chwili pisania tego tekstu, 2.8.2 został wydany ponad rok temu w październiku 2017. Trzy lata wcześniej wydano wersję 2.7.0, czyli cztery lata od momentu napisania tego tekstu. Widzę posty i komentarze o 3.0 coming out, w tym niektóre z dwóch lat temu pytając, czy plakat powinien czekać na 3.0 wyjść przed wdrożeniem dużej zmiany (mam nadzieję, że plakat nie czeka jeszcze), ale nie mogę znaleźć żadnych terminów co do tego wydania może być na zewnątrz.
chociaż jestem wielkim fanem frameworka i uważam go za wystarczająco dojrzały, wiem, że ta niejasność w możliwości przyszłych wydań sprawia, że niektórzy kierownicy projektów raczej się denerwują. Nikt nie chce być przywiązany do ram, które ślepe zaułki na nich.
GWT to biblioteka, z której będę nadal korzystać i sugerować innym zespołom Korzystanie, jeśli spełni ich potrzeby.
Vaadin
Vaadin to kolejna świetna opcja.
początkowo myślałem, że GWT jest moim jedynym wyborem do pisania interfejsów użytkownika w standardowym kodzie Java. Ale kiedy rozmawiałem z tym małym sklepem, o którym wspomniałem powyżej, powiedzieli mi, że zdecydowali się użyć Vaadin do swoich projektów. Więc, oczywiście, musiałem się rozejrzeć. Jestem pod wrażeniem.
powiem szczerze, w chwili pisania tego tekstu nie użyłem jeszcze Vaadina do stworzenia projektu. Ale przygotowuję kilka osobistych projektów, do których potrzebuję front-endów i zamierzam z nich skorzystać. Jeśli Vaadin spełni swoje obietnice, będzie to idealne ramy dla tych projektów.
Vaadin obiecuje wspierać języki działające w JVM, takie jak Kotlin i Scala. Mam nadzieję, że to również Groovy. Jeśli przeczytasz wiele moich poprzednich postów, będziesz wiedział, że jestem fanem tego języka, ponieważ możesz szybko stworzyć kod, który można łatwo utrzymać. Są to dla mnie ważne wymagania, zwłaszcza konserwacja. Nic nie niszczy projektu bardziej niż nie jest w stanie łatwo utrzymać kodu, który został już napisany.
myśli końcowe
masz wiele możliwości, jeśli chodzi o architekturę aplikacji internetowej, jeśli chodzi o technologię interfejsu użytkownika. Niezależnie od tego, czy projektujesz projekt, czy środowisko produkcyjne, masz tak wiele wymagań, o których musisz pamiętać.
dwa wymagania, o których musisz pamiętać, to łatwość rozwoju i łatwość konserwacji.
- środowisko programistyczne, które jest trudne do pracy, spowoduje wiele przekroczeń kosztów i sprawi, że nowi programiści będą bardzo trudni.
- projekt, który jest trudny do utrzymania, spowoduje frustracje i zmarnuje więcej pieniędzy w przyszłości.
w oparciu o potrzeby i wymagania Twojego zespołu, pełne rozwiązanie Java, od interfejsu użytkownika po model, jest nie tylko możliwe, ale także doskonałym wyborem zarówno dla szybkiego rozwoju, jak i łatwości konserwacji.
Uwierz w dobry kod.