Java dla frontendu – czy to w ogóle możliwe?
Wiele osób uważa, że używanie Java do programowania front-endu jest po prostu niemożliwe: w końcu Java jest przeznaczona do back-endu. Tak, dawno temu aplety Java i Java Webstart umożliwiały uruchamianie aplikacji Java z przeglądarki. Ale to jest historia starożytna, tak stara jak wtyczki Flash. Ale nawet bez apletów istnieje sposób na wykorzystanie Java w interfejsie - są to JSP (Java Server Pages), których wiele uczniów uczyło się na lekcjach informatyki. Jednakże, chociaż w niektórych książkach o Javie nadal omawia się technologię JSP, od 2010 roku technologia ta jest przestarzała. Czy to naprawdę kolejny ślepy zaułek? Istnieją również frameworki, które pozwalają programistom Java na „transpilację” (przekształcenie w złożony sposób) swojego kodu na JavaScript przy użyciu Google Web Toolkit (GWT, to też nie jest super nowe ) lub poprzez J2Cl (również od Google). Należy zauważyć, że GWT i J2Cl nie są odpowiednie dla początkujących, są to raczej narzędzia dla przedsiębiorstw opracowane przez Google do użytku w dużych projektach.Niedoceniany bohater Javy dla frontendu: Jakarta Faces (JSF)
Java Server Faces (JSF), obecnie znane jako „Jakarta Faces”, istnieją co najmniej od początku 2010 roku. Zawsze mnie dziwi, że jest mało znany i rzadko wspominany, ponieważ ten framework ułatwia szybkie, bezpieczne i niezawodne tworzenie aplikacji internetowych. JSF jest łatwy do nauczenia i w pełni wykorzystuje ekosystem Java. Oto jak na przykład utworzyć stronę internetową z zawartością dynamiczną:- Utwórz stronę HTML (z rozszerzeniem .xhtml).
- Zmień znaczniki HTML <head> i <body> na znaczniki <h:head> i <h:body>.
- Teraz, aby wyświetlić dynamiczną zawartość poprzez wywołanie jakiejś właściwości w backendie, po prostu umieść ten kod za hashtagiem i pomiędzy paskami kontrolnymi:
#{backendscript.myText}
Czy JSF jest skomplikowany? Jakie są jego zalety?
JSF wcale nie jest skomplikowany. Ponadto:- Jest dobrze zintegrowany z klasycznymi środowiskami Java IDE (NetBeans, IntelliJ IDEA i Eclipse). Każde IDE zapewnia:
- Projekty szablonowe wypełniające szablon konfiguracji Mavena (co swoją drogą jest bardzo proste).
- Narzędzia do debugowania (z ponownym ładowaniem na gorąco, przynajmniej dla NetBeans).
- Potężne narzędzia do autouzupełniania, refaktoryzacji, nawigacji i wyróżniania błędów dla ekosystemu Java. IDE może dostarczyć przydatnych informacji o dowolnej klasie, o której wspominasz na stronie HTML (takiej jak wspomniany powyżej #{backendscript.myText} ). Strony HTML faktycznie zintegrują się z resztą kodu!
- Bardzo łatwo radzi sobie ze złożonymi odmianami kodu na stronach HTML.
- Czy chcesz odświeżyć część strony jednym kliknięciem przycisku? Dodaj właściwość aktualizacji do swojego przycisku, a następnie identyfikator komponentu, który chcesz zaktualizować.
- Jeśli chodzi o aktualizację i dynamiczną zawartość: bardzo podoba mi się prostota JSF: frontend aktualizuje backend, aktualizuje sam siebie lub backend aktualizuje frontend. Wszystko to są podstawowe wymagania aplikacji internetowej i są one tutaj obecne.
- Jeśli chcesz, aby użytkownik mógł pobrać plik lub kilka plików z warunkami dotyczącymi typów i rozmiarów plików, wystarczy dodać jedną linijkę do kodu z przejrzystymi parametrami .
- Chcesz stworzyć stronę internetową w wielu językach? Dodaj tag <f:view> do swojego kodu HTML i uzyskaj język użytkownika za pomocą tylko jednej linii w backendie.
- Możesz dodawać i mieszać znaczniki HTML, skrypty JS i CSS, a wszystko to jest zoptymalizowane pod kątem SEO.
Primefaces: Ogromna lista bezpłatnych komponentów i motywów JSF
JSF zawiera długą listę gotowych do użycia komponentów, które tworzą klasyczne części strony HTML, więc nie musisz tego robić samodzielnie. Na przykład użyj tagu <h:dataTable> , aby utworzyć tabelę wyświetlającą określone dane załadowane z Twojego zaplecza — bez konieczności odtwarzania ich od zera. Jest też lepsza opcja: Prime Tek opracował zestaw komponentów typu open source o nazwie Primefaces . Posiadają dodatkowe funkcje i mają kilka zalet. Na przykład zamiast <h:dataTable> użyj po prostu tagu Primefaces <p:dataTable>. Spowoduje to utworzenie podstawowej tabeli danych, do której można łatwo dodać przełączniki kolumn , kolumny dynamiczne lub edytować funkcje w tabeli.Ale Java jest powolna i ciężka?
1. Czy Java jest powolna?
NIE. Zabawne jest to, że frameworki JS, takie jak React, Angular i Vue, zostały stworzone z myślą o tym, że będą szybsze i mądrzejsze niż JSF w Javie, ponieważ natychmiast przesyłają całą logikę aplikacji do przeglądarki osoby odwiedzającej witrynę. JSF działa inaczej: kiedy użytkownik wywołuje stronę (np. https://nocodefunctions.com), aplikacja w backendzie generuje kod HTML tylko dla tej strony i odsyła go. Nazywa się to „renderowaniem po stronie serwera” (SSR). W praktyce aplikacje jednostronicowe mogą wymagać od użytkownika bardzo dużo czasu na pobranie i załadowanie plików JavaScript tworzących całą aplikację. Może to prowadzić do złego doświadczenia użytkownika (konieczność oczekiwania na załadowanie pierwszej strony) i problemów z SEO. W rezultacie renderowanie po stronie serwera w stylu Java odzyskało popularność, ponieważ jest uważane za lepsze od renderowania po stronie klienta pod względem szybkości i wydajności. Pojawiają się nowe struktury SSR , które wymagają od programistów przyzwyczajonych do renderowania po stronie klienta obsługi i łączenia tych dwóch różnych logik.2. Czy Java jest trudna?
NIE. Co jest potrzebne do wdrożenia aplikacji JSF:- Sama aplikacja. Prosta aplikacja JSF „hello world” ma prawdopodobnie 10 KB lub mniej.
- Opcjonalne są Primefaces (omówione powyżej), jeśli potrzebujesz komponentów wyższej jakości. To dodatkowe 4,5 MB .
-
Posiadaj serwer w chmurze lub gdzie indziej. Do testowej wersji Nocodefunctions (https://test.nocodefunctions.com) korzystam z firmy Hetzner, gdzie wynajmuję serwer typu bare metal z 2 GB RAM za 4,15 euro miesięcznie. Mógłbym użyć mniej pamięci RAM, ale moja aplikacja udostępnia usługi wymagające dużej ilości danych i musi zmieścić się w pamięci. Prawdziwa (nie testowa) wersja nocodefunctions działa na większym serwerze (również z Hetznerem), aby równolegle obsługiwać zadania większej liczby użytkowników wymagające dużej ilości danych - za mniej niż 50 euro miesięcznie.
-
Musisz mieć zainstalowaną Javę. Jest to pojedynczy plik do pobrania o rozmiarze poniżej 200 MB dla komputerów Mac, Win lub Linux, całkowicie bezpłatny nawet do użytku komercyjnego.
-
Aby go uruchomić, musisz mieć serwer WWW Java. Dużo ich. Osobiście korzystam z Payara Micro (Community Edition), która jest bezpłatna i pobiera jednorazowo 77MB pliku.
-
Uruchom aplikację.
GO TO FULL VERSION