JAVA, PHP czy Node.js

JAVA, PHP czy Node.js
Mossar
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:74
0

Witam, od jakiegoś czasu zajmuję sie tylko i wyłącznie frontendem. Powoli zacząłby mi się przydawać chociażby podstawowy backend. Jeśli chodzi o backend to moja wiedza jest tylko taka, że w miarę ogarniam SQLa, robiłem najbardziej podstawową obsługę GET i POST w Javie (jako zadanie na uczelni, prosta obsługa formularza i model wykonuje jakieś obliczenia na podanych danych).

No i teraz nie chciałbym uczyć się czegoś niepotrzebnego. Z tego co widzę ostatnio ogromną popularność zyskuje node.js, ale wiem też, że niewiele hostingów (przynajmniej polskich) obsługuje node'a. Jave umiem o tyle o ile, nie należy ona do moich ulubionych języków, no ale powiedzmy, że mógłbym przysiąść bardziej gdyby się okazało, że jest najlepszym wyjściem z tej trójki. No i PHP, o którym słyszałem tyle skrajnych opinii że masakra. Czy nauka node.js, który ma zdecydowanie inną logikę niż np. PHP ma sens, jeśli w moim przypadku server-side'owe umiejetności są na naprawdę niskim poziomie.


TU
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 8 lat
  • Postów:26
0
Mossar napisał(a):

robiłem najbardziej podstawową obsługę GET i POST w Javie

Java!=JavaScript

Wydaje mi się, że nauka PHP jest ważniejszym elementem, bo to fundament działania strony internetowej. JS zawsze można wyłączyć w przeglądarce i wtedy bach... :)

hauleth
PHP ssie po same kule.
n0name_l
nauka PHP jest ważniejszym elementem, WTF?
TU
Od JavaScriptu tak. Wtedy myślałem, że autor się pomylił i nie ma na myśli Javy
n0name_l
Od JavaScriptu tak., a to niby czemu?
TU
Jak sobie wyobrażasz funkcjonalność strony, gdy użytkownik wyłączy JS?
n0name_l
Uzytkownik jest w stanie wylaczyc cos na serwerze? ;o
TU
nikt tu nie mówi o wyłączaniu czegoś na serwerze, a po stronie klienta
n0name_l
To nie rozumiem, porownujesz dwie rozne technologie w dwoch roznych aspektach? To tak jakby porownywac kosiarke i odkurzacz.
TU
nie rozumiem czego nie rozumiesz. "nauka PHP jest ważniejszym elementem, bo to fundament działania strony internetowej" serio takie nie jasne?
n0name_l
To jest po prostu bzdura jakich malo.
n0name_l
to fundament działania strony internetowej, 90% userow tego forum potrafi napisac webapke bez korzystania z phpa.
TU
ja tu mowie o PHP i JS jakbyś nie zauważył
n0name_l
Jestes jakims wielkim trollem czy po prostu nie masz pojecia o czym piszesz? Wstukaj w google: js server side.
TU
mowie o client-side
hauleth
Jak na moje takie myślenie (że ktoś zablokuje JS) jest trochę cienkie. Dlaczego? Spójrzmy prawdzie w oczy: mało kto wyłącza całkowicie obsługę JS. Raczej jest to ograniczanie skryptów na podstawie white-/blacklisty. A kto to robi? Raczej nie zwykły szary użyszkodnik, a osoby doświadczone, które wiedzą co robią. Więc IMHO przejmowanie się tym, że ktoś wyłączy obsługę JS jest durne (gdyż ten kto ma ją wyłączoną włączy ją jeśli trzeba).
TU
Jeśli robiłbyś walidację formularza to zrobiłbyś ją tylko w JS i nie przejmował się, że ktoś wyłączy?
hauleth
Walidacja danych zawsze musi być również po stronie serwera. To jest wręcz aksjomat. Poza tym od czego mamy nowe typy inputów w HTML5? To przeglądarka powinna się IMHO zająć walidacją 90% danych w formularzu (zwłaszcza takich jak email).
TU
Ktoś może mieć starą przeglądarkę -> html5 required nie działa, ktoś może wyłączyć JS -> walidacja nie działa, więc wszystko sprowadza się do php, dlatego uważam, że to fundament
n0name_l
Albo JS po stronie serwera, albo 20 innych technologii, ktorym php nie dorasta do piet.
TU
Przypomnę, że mówimy tu o client-side JS oraz PHP, a nie o innych technologiach
n0name_l
Przypomne, ze temat jest o technologiach server-side. Zreszta jak strona ma dzialac tylko po stronie klienta, to po co walidacja formularzy? po co martwienie sie, ze strona nie dziala?
TU
Przypomnę, że dyskusja była jednak na inny temat. Może skończmy po prostu temat?
hauleth
g**no a nie PHP. Mało kto się przejmuje IE starszym niż 8 (więc HTML 5 jak najbardziej pasuje). O JSie pisałem wyżej. Wszystko sprowadza się do tego, że dane trzeba też walidować po stronie serwera (o ile mamy backend). A po stronie serwera nie musi być PHP (które jak pisałem wyżej - ssie po same kule). Więc twoje stwierdzenie, że PHP to podstawa można o kant d**y. Piszę aplikacje internetowe od dłuższego już czasu i od czasów gimnazjum nie tykam się PHP. Więcej, uważam go za jeden z najgorszych języków programowania jakie istnieją.
n0name_l
@turson Moze po prostu zrozum, ze smieszne jest porownywane js client-side z php server-side i mowienie, ze php jest lepszy bo nikt walidacji nie wylaczy ;D
TU
Kompletnie się nie rozumiemy :)
hauleth
@turson albo nie potrafisz się porządnie wysłowić. Osobiście widziałem parę aplikacji, które wcale nie miały BE. Wtedy cała twoja teoria o PHP leży i kwiczy.
Mossar
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:74
0
turson napisał(a):
Mossar napisał(a):

robiłem najbardziej podstawową obsługę GET i POST w Javie

Java!=JavaScript

No bez przesady, chyba nie myślałeś, że mylę te dwa pojecia. Tak jak pisałem, używałem HTTP Servleta w Javie z Glassfishem do obsługi GET i POST.

Wydaje mi się, że nauka PHP jest ważniejszym elementem, bo to fundament działania strony internetowej. JS zawsze można wyłączyć w przeglądarce i wtedy bach... :)

No właśnie w związku z możliwością wyłaczenia JS, użycia jakiś NoScriptów, etc. Dlatego też zastanawiał mnie sens używania Node.js.


edytowany 2x, ostatnio: Mossar
TU
niektórzy mylą dlatego zapobiegawczo tak napisałem :P jak zacząłeś pisać w javie aplikacje webowe to ja bym w tym kierunku się rozwijał
Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 5 godzin
3

Node.js działa po stronie serwera, więc skutek wyłączenia JS w przeglądarce byłby taki sam jak przy każdej innej technologii backendowej.

Moim zdaniem, zamiast babrać się w PHP i/ lub generowanie HTMLa na serwerze, idź od razu w RESTa oraz we frontend w frameworku JavaScriptowym. Backend możesz np zaklepać w Javie i Pythonie, żeby sobie poćwiczyć łączenie różnych technologii :]


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:15 dni
3

Podstawowym pytaniem jest jakie języki znasz najlepiej. Wolisz JavaScript, Javę, Pythona, Rubiego, Perla, czy co tam chcesz? Jak bardzo jesteś oblatany w tych językach. Mówisz, że pisałeś FE - czyli znasz dobrze JavaScript. Jeśli tak to Node.js. Jeśli zajmowałeś się bardziej webmasteringiem (czyli HTML + CSS) to warto zacząć od nauczenia się właśnie JSa i RESTa od strony przeglądarki (możesz też spróbować od razu jakiegoś Backbone, Ember, Angular). Potem spróbować również sił w BE, a tam masz całą kawalkadę języków i technologii:

  • Ruby - Rails lub Sinatra
  • JavaScript (Node.js) - Meteor i co tam jeszcze jest
  • Java/Scala - JSP, Spring, Play
  • Groovy - Grails
  • Python - Pylons, Django
  • .NET - ASP.NET
  • PHP - Zend, nie wiem co tam jeszcze się używa

Ogólnie hostingiem na razie się nie przejmuj. Na czas nauki nie potrzebujesz żadnego hostingu, a jak już będziesz miał co hostować to nie będzie miało znaczenia czy jest to hosting w Polsce czy za granicą. A za granicą masz całe multum hostingów/SaaS'ów/PaaS'ów i IaaS'ów do użycia:

  • Windows Azure
  • Google App Engine
  • Amazon EC2
  • Heroku
  • Rackspace
  • AppFog
  • i dużo dużo innych

Część z nich możesz uzyskać nawet ze zniżką lub za darmo na pewien okres czasu lub do pewnej ilości zasobów.

tl;dr
Przejrzyj sobie co jest dostępne i wybierz z tego. Nie ma praktycznie złych wyborów (choć ja za taki uważam PHP).


Mossar
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:74
0
winerfresh napisał(a):

Podstawowym pytaniem jest jakie języki znasz najlepiej.

Dość długi okres czasu pisałem m.in. gry 2d w C++, z C++ przeszedłem powoli na C#, ale nie mogę powiedzieć, że C# znam, bo niewiele w nim robiłem. Z konkretów jedynie aplikacja winformsowa do wyostrzania bitmapy przy użyciu bliboteki asemblerowej. Jave zacząłem ogarniać w tym semestrze z racji tego, że mamy taki przedmiot, ale nie jestem fanem tego języka. JavaScriptu kiedyś nienawidziłem, składnia i logika wydawała mi się strasznie ciężka, ale od czasu kiedy używam go częściej, zaczynam go lubić i rozumieć. Dlatego też myślałem o Node i prawdopodobnie nawet jak będę robić w czym innym to chętnie poznam node.js. Jeśli chodzi o Ruby, Pythona czy PHP to moja wiedza jest całkowicie zerowa.

Jeśli zajmowałeś się bardziej webmasteringiem (czyli HTML + CSS) to warto zacząć od nauczenia się właśnie JSa i RESTa od strony przeglądarki (możesz też spróbować od razu jakiegoś Backbone, Ember, Angular).

A mógłbyś przybliżyć trochę tego RESTa, jak to w praktyce wygląda? Bo z tego co czytam to jest to wzorzec, ale niestety pierwszy raz się spotykam z tym.

  • JavaScript (Node.js) - Meteor i co tam jeszcze jest
  • Java - JSP, Spring, Play
  • .NET - ASP.NET

Właściwie to to są trzy możliwe wybory w mojej sytuacji. Poczytam więcej o nich i zastanowie się dokładnie co wybrać.


edytowany 1x, ostatnio: Mossar
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:15 dni
1

REST (eng. REpresentational State Transfer) to jest wzorzec architektoniczny, który używa czasowników HTTP do określania akcji wykonywanych na obiektach. Używa on CRUD by określić jaka ma być akcja, a URL jest identyfikatorem obiektu. Dzięki temu jesteśmy w stanie zapewnić API przez ten sam interface przez jaki udostępniamy standardowe widoki. I. e. adres /users/trevor odpowiada za jakiegoś użytkownika - przy pomocy zapytania GET możemy dostać informacje o nim takie jak imię, nazwisko, etc. Przy pomocy zapytania PUT aktualizujemy dane tego użytkownika, a zapytaniem DELETE usuwamy go. W ten sposób rozwiązujemy 2 problemy - prefetchingu oraz API.

Jeśli używałeś coś Javy to może Ci się kojarzyć coś jak SOAP. REST jest znacznie lżejszą i bardziej logiczną wersją Web Services. Do poczytania: http://rest.elkstein.org/2008/02/what-is-rest.html (jest trochę przestarzałe, ale podstawy ogarniesz).

Poza tym zalecam naukę JSa bez jQuery. Naucz się manipulować DOMem przy pomocy "surowych" funkcji, jak document.querySelector[All], przy pomocy podstawowych elementów DOM (https://developer.mozilla.org/en-US/docs/DOM/DOM_Reference). Dzięki HTML 5 jest to niewiele trudniejsze niż używając jQuery, a na pewno ogarniesz więcej.


edytowany 1x, ostatnio: hauleth
Mossar
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:74
0
winerfresh napisał(a):

Poza tym zalecam naukę JSa bez jQuery. Naucz się manipulować DOMem przy pomocy "surowych" funkcji, jak document.querySelector[All], przy pomocy podstawowych elementów DOM (https://developer.mozilla.org/en-US/docs/DOM/DOM_Reference). Dzięki HTML 5 jest to niewiele trudniejsze niż używając jQuery, a na pewno ogarniesz więcej.

Czytałem ostatnio jeden z wpisów Ferrante o jQuery o tym, że w wielu przypadkach lepiej korzystać z czystego JSa. Ale nie zaczynałem JSa od jQuery wbrew pozorom, do pierdółek wizualnych dotyczących pojedynczego elementu wykorzystuje JQuery (lub jeśli się da CSS3), ale gdy kod dotyczy większej ilości odwołań do elementów DOM to już staram się stosować JS bez frameworków.

Dziękuje bardzo za rozbudowane odpowiedzi :)


hauleth
99% podstawowych animacji da się uzyskać bez jQuery. Co innego z grami czy innymi takimi (ale wtedy jQUery jest za słabe).
Mossar
Ja sobie zdaje sprawę z tego i na pewno wiecej to daje jeśli chodzi o poznanie języka. Ale w niektórych przypadkach różnica między użyciem funkcji jQuery a czystego JSa jest po prostu pomijalna, co innego gdy się robi w tym JSie coś poważniejszego. Co nie zmienia faktu, że więcej bym się nauczył gdybym się starał wszystko bez jQuery robić.
hauleth
Poważniejsze rzeczy też da się zrobić bez jQuery. Przydatne biblioteki to np. Mustache czy Lazy.js, które znacznie upraszczają pewne rzeczy. jQuery jako manipulator DOM już jest IMHO passe.
Mossar
Ja właśnie miałem na myśli, żeby poważniejsze rzeczy robić czystym JSem. A co do mustache i lazy to jeszcze nie ogarniałem tego, ale chętnie sprawdzę.
Demonical Monk
  • Rejestracja:ponad 17 lat
  • Ostatnio:12 miesięcy
0

Do node.js próbowałem podejść kilka razy, jeśli masz projekt > 100 linijek to robi się gehenna, milionowy poziom zagnieżdżenia callbacków i w ogóle. To się nie nadaje do tworzenia czegoś innego niż nieskomplikowane aplikacje do zadań specjalnych.


Women were the reason I became a monk - and, ah, the reason I switched back...
hauleth
Poczytaj o promises.
somekind
Solić promisy, jest przecież async.waterfall. Ale nodejs ssie i tak.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.