2013-09-01 6 views
7

Planuję napisać aplikację internetową. Jednak chcę napisać zarówno stronę klienta, jak i serwera w Scali. Czy powinienem wybrać Scala.js? czy powinienem wybrać GWT. Jakie są przypadki, w których muszę wybrać jedno nad drugim? Czy istnieją również inne frameworki Scala, które mogą być używane do programowania WWW przez klienta poza tymi dwoma?Scala.js kontra Scala GWT dla rozwoju strony klienta?

Odpowiedz

4

Nie należy używać żadnego z nich.

  • ScalaGWT został porzucony na ponad rok.
  • Scala.js jest eksperymentalna i wymaga od użytkowników pobrania biblioteki 16Mo (poprawi się, ale jest niedopuszczalne, z wyjątkiem niektórych aplikacji do gier).

[edytuj] biblioteka została zmniejszona i to stwierdzenie nie jest już prawdą w tej chwili.

Dostępne są inne technologie, ale wybór jednej z nich zależy od rodzaju aplikacji, którą chcesz napisać. Jeśli planujesz rozwinąć cienkiego klienta, wykorzystując technologię szablonów (jak JSP lub JSF), można rozważyć użycie Juz szablony, winda, Scalatra ...

Aby pomóc rozważyć swoje potrzeby, tutaj jest kilka myśli:

Będziesz potrzebować widgetów i innych rzeczy do zaprojektowania interfejsu użytkownika, a te rzeczy są zwykle zorientowane na komponenty i sterowane zdarzeniami. W takim przypadku FP nie oferuje znacznej przewagi nad OOP.

W standardowej aplikacji korporacyjnej scala.js przydałoby się zaprojektować czystą bibliotekę funkcjonalną dla kodu js. Ten rodzaj biblioteki zdecydowanie ma wiele do zaoferowania, ale nie będzie podstawą kodu po stronie klienta. Zamiast tego widgety, infrastruktura MVC i warstwa do integracji z back-endem będą tym, nad którymi będziesz pracował przez większość swojego czasu.

GWT istnieje już od dłuższego czasu. Uważam to za dojrzałą i sprawdzoną technologię. Będziesz musiał nauczyć się kilku poprawek i wzorców, aby móc w pełni wykorzystać jego potencjał, ale moim zdaniem, znacznie mniej niż to, co jest potrzebne do napisania czystego i łatwego do utrzymania kodu js.

GWT wcale nie wymaga znajomości js (chociaż wszyscy zgadzamy się, że zawsze najlepiej jest wiedzieć, co dzieje się w przeglądarce). Daleko nie zajdziesz scala.js, jeśli nie wiesz, do czego zmierzasz.

Jeśli dobrze znasz już javascript, łatwiej będzie wpisać kod scala tak, jakby był jsem z obsługą SCALA.

Dużym zespołom łatwiej pracować z GWT niż z js, ponieważ możesz łatwo korygować kod, preferując testowanie kodu i ponowne użycie w tym samym czasie.

GWT to zdecydowanie obiekt (widget/model/widok) zorientowany i sterowany zdarzeniami. Jeśli masz zamiar zaprojektować interfejs w pełni funkcjonalny (dla gier lub bardzo specyficznych aplikacji), myślę, że będzie on przeszkadzał w twoim projekcie.


GWT

  • Dojrzałe
  • Jest pełnoprawnym Toolkit
  • GWT specyficzne wzorce i dobre praktyki są dobrze udokumentowane
  • Łatwa integracja z java/scala back-end
  • Wagi rozwój ponad dużymi zespołami
  • najlepiej, jeśli nie wiem js jeszcze
  • obiektowego, GWT dobroć jest tam (wtrysk zależność, MVP, asynchroniczny, i18n, JSR-303 walidacja ...)
  • zoptymalizuje i skompilować kod do małych js plik

Scala.js

  • Całkiem nowy, w trakcie produkcji
  • Nie jest zestawem narzędzi, ale kompilatorem.
  • Dlatego musisz być świadomy dobrych praktyk js, wzorców projektowych i bibliotek, ponieważ twój kod scala będzie oddziaływał z js (całkiem) bezpośrednio
  • Musisz napisać/połączyć warstwę do integracji z kończyć sobie
  • dużo trudniejszy w obsłudze wielka zespół
  • Nie trzeba znać GWT :-)
  • programowania funkcyjnego, Scala dobroć jest tam (cechy, wzory, ćwiczenia, case ...)
  • [edytuj ] W chwili zadawania pytania wymagano biblioteki 16 Mo

rada Finał

  • Czy trzeba widżety i złożonych interakcji pośredników komponentów UI czy to wystarczy, aby wykorzystać technologię szablonów?
  • Użyj ScalaGWT na własne ryzyko.
  • Można użyć scala.js do projektowania bibliotek js, projektów eksperymentalnych, gier, ... Możesz zadzwonić do kodu js skompilowanego z scala.js z aplikacji GWT (jeśli przejdziesz przez bibliotekę 16 Mo)
+3

Należy pamiętać, że problem z rozmiarem został usunięty w pliku Scala.js (przy użyciu kompilatora zamykającego Google). Przykładowa gra Reversi kompiluje się teraz do mniej niż 300 KB kodu JavaScript. – gzm0

+1

Tak, to naprawdę fajne, że rozwiązali ten problem. Zamierzam zaktualizować moją odpowiedź. – otonglet

+3

Scala.js nie jest już eksperymentalna: http://www.scala-lang.org/news/2015/02/05/scala-js-no-longer-experimental.html –