JavaRush /Blog Java /Random-PL /Przerwa kawowa #157. Wykorzystanie języka Java w aplikacj...

Przerwa kawowa #157. Wykorzystanie języka Java w aplikacjach front-endowych w roku 2022

Opublikowano w grupie Random-PL
Źródło: Nocodefunctions Zwracamy uwagę na artykuł o doświadczeniach związanych z tworzeniem niezależnej aplikacji internetowej z wykorzystaniem języka Java. Przerwa kawowa #157.  Wykorzystanie języka Java w aplikacjach front-endowych w roku 2022 - 1

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}
Następnie utwórz plik Backendscript.java w swoim backendzie i dodaj zmienną o nazwie String myText = "cześć! witaj na mojej stronie!" . Zostanie on wyświetlony na stronie internetowej. JSF jest naprawdę bardzo prosty. Jest dobrze udokumentowany dzięki wielu pytaniom na temat Stackoverflow , oficjalnej dokumentacji , kilku książkom ( ten link i lubię też książki Davida Heffelfingera ) i oczywiście filmom na Youtube .

Czy JSF jest skomplikowany? Jakie są jego zalety?

JSF wcale nie jest skomplikowany. Ponadto:
  1. 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!
  2. 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.
  3. Możesz dodawać i mieszać znaczniki HTML, skrypty JS i CSS, a wszystko to jest zoptymalizowane pod kątem SEO.
Masz pełną kontrolę nad HTML generowanym przez JSF i zawsze możesz dodać kod HTML i js. Ułatwia to współpracę z projektantami i programistami front-end, którzy nie znają lub nie interesują się JSF. Kiedy pracowałem z CSS, miałem do pomocy projektanta, który mógł pracować ze stronami HTML, które stworzyłem przy użyciu JSF, wprowadzając niezbędne zmiany bez żadnych trudności. JSF generuje kod HTML, który możesz przeglądać i czytać w przeglądarce. Jest to bardzo pomocne przy debugowaniu za pomocą zwykłych narzędzi programistycznych i sprawdzaniu, czy działania SEO są poprawnie wdrażane.

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 .
Teraz uruchom to wszystko na serwerze. Aby to zrobić, potrzebujesz:
  1. 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.

  2. 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.

  3. 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.

  4. Uruchom aplikację.

Wniosek: pomyśl o Javie!

Mam wrażenie, że niektórzy programiści uważają, że Python, Ruby, PHP, NodeJS + React... to jedyny wybór przy uruchamianiu małej aplikacji internetowej. Ale teraz mam nadzieję, że w swoim następnym projekcie rozważą także Java + JSF.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION