Java/C# szybkość/toporność tworzenia aplikacji

0

W którym język waszym zdaniem szybciej tworzyć aplikację? Osobiście moje wrażenia:
-Desktop: Swing vs WindowsForm, dla mnie przyjemniejsze i szybciej można było zrobić aplikację w WindowsForms.
-Desktop: JavaFx vs WPF - niestety nie mam porównania, JavaFX na pewno lepiej niż już Swing, ale czy ktoś używa jeszcze Javy na desktop?
-Web
Spring MVC vs ASP.NET MVC - postawić aplikację można szybciej w Visual Studio, jest od razu skonfigurowana, jest mniej plików xml i ogólnie konfiguracji. A później to nawet podobne do siebie, tyle, że w VS jest Scaffoding(pytanie czy jest coś takiego dla Spring MVC). Spring Boot wiele ułatwia, ale przydałby się jeszcze Scaffoding.
Silników widoku w Spring MVC do wyboru tyle prawie co dystrybucji linuksa, co niektórzy powiedzą, że to zaleta.
Mobile
Android vs WP/WM - pisałem tylko na androida, więc się nie wypowiem.

Czy tylko ja mam takie wrażenie, że .NET można zrobić dużo rzeczy szybciej mniej się przy tym zmęczyć? Jakie jest wasze zdanie?

2

Realia komercyjne w aplikacjach webowych są takie, że projekty trwają wiele lat i zysk kilku dni na przestrzeni kilku lat jest pomijalny, a liczy się przede wszystkim elastyczność frameworków i komponowalność jego elementów. Nawet jeśli pisząc we frameworku X okaże się, że trzeba będzie trochę rozwleklej oprogramować te same komponenty niż we frameworku Y to i tak niekoniecznie będzie to miało duży wpływ na szybkość tworzenia aplikacji, bo zwykle i tak przy tworzeniu N-tego komponentu zauważa się kolejne duplikacje kodu i wyodrębnia kolejne abstrakcje. Sposób w jaki wyodrębni się te abstrakcje definiuje styl pisania kodu w projekcie, więc summa summarum różnice we frameworkach tego samego typu się zmniejszają.

Sztandarowym (dla mnie) przykładem marketingowego bubla jest Hibernate i wszelkie wynalazki do niego podobne (czyli np też wywodzący się od niego NHibernate). Hibernate w tutorialach wygląda na coś wspaniałego, bo załatwia od razu tworzenie tabel w bazie, mapowanie między nimi, a obiektami oraz automatycznie tworzy zapytania do bazy. W praktyce jednak jest kulą u nogi, bo:

  • nie zawsze mapowanie 1:1 między bazą, a obiektami jest właściwe,
  • skomplikowane i automatycznie obsługiwane hierarchie obiektów zniechęcają do przepakowywania modelu bazodanowego w niezależny model obliczeniowy/ widokowy, a to z kolei powoduje duże sprzężenie między wszystkimi warstwami aplikacji,
  • jedna strategia wyciągania danych z bazy nie jest właściwa we wszystkich zastosowaniach, więc trzeba to omijać za pomocą Criteria API lub JPQL bezpośrednio,
  • wzbogacanie bajtkodu przez Hibernate powoduje niespodzianki jeżeli nie przepakuje się w odpowiednim momencie modelu bazodanowego w inny,
    Ogólnie nie rozmawiałem z nikim, kto byłby zadowolony z użycia Hibernate. Ludzie zwykle na to narzekają. Mimo wszystko marketingowo wygląda świetnie i ludzie się na to nabierają. Stąd należy zwracać uwagę na faktyczne wady i zalety, a nie to co marketingowcy chcą wcisnąć.

Jeżeli znowu patrzymy na szybkość tworzenia aplikacji w kontekście stworzenia projektu na kilka miesięcy to prawdopodobnie wygrają frameworki typu Ruby on Rails, gdzie pisania jest najmniej. Tam szybkość stawiania aplikacji jest największa. Ale jeśli patrzymy w kontekście projektu na wiele lat, to kilkudniowe początkowe zyski nie mają znaczenia, a ważna staje się łatwość stabilnego rozwijania i utrzymywania projektu. Do tego potrzebna jest przede wszystkim elastyczność, testowalność oraz sensowna architektura. To pasowałoby porównać.

0
Wibowit napisał(a):
  • nie zawsze mapowanie 1:1 między bazą, a obiektami jest właściwe,

Ale kto każe mapować 1:1 do tabeli? W różnych modułach aplikacji można mieć różne klasy - jedne mapowane 1:1, inne na część kolumn jednej tabeli, a jeszcze inne na kolumny z kilku złączonych tabel. Celem ORMa, jak sama nazwa wskazuje, nie jest mapowanie do tabel, lecz do relacji. Złączenia i projekcje są relacjami właśnie.

  • skomplikowane i automatycznie obsługiwane hierarchie obiektów zniechęcają do przepakowywania modelu bazodanowego w niezależny model obliczeniowy/ widokowy, a to z kolei powoduje duże sprzężenie między wszystkimi warstwami aplikacji,

To nie wina biblioteki, że programiści to idioci. Jeśli ktoś sam nie rozumie, że model danych, model domeny i model widoku to trzy różne modele, to żadna biblioteka mu nie pomoże.

0

Oczywiście. Tyle że, jak już napisałem, w mniemaniu niektórych takie podejście zwiększa szybkość tworzenia aplikacji.

0

Wydaje mi się, że i tak najszybciej aplikacje tworzy się w DELPHI. Tam są najlepsze wzorce i ORM-y

0

A tak w ogóle to co teraz jest trendy w tworzeniu aplikacji desktopowych?

1

Electron. Bo wtedy robisz appkę webową i możesz tam wpakować wszystkie modne rzeczy w webie, których jest więcej ;-)

0

W desktopach ( ale i mobile ) dosyć popularne jest Qt.

0

Apki webowe na zachodzie teraz piszą w RoR i Django i też się zastanawiam czy zostawić PHP i zacząć uczyć się od razu ich, czy najpierw liznąć samego Ruby i Pythona? Ponoć same apki w tych frameworkach pisze się błyskawicznie.

0

Zależy jakiego kalibru te apki. PHP/ Python czy Ruby są zwykle używane albo do małych aplikacji albo tylko do frontendu. Języki skryptowe nie są chętnie wybierane do złożonego backendu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1