Am lucrat de curând în cadrul unui proiect o aplicație care avea și o componentă destul de semnificativă de tehnologie web. De fapt în ziua de astăzi e greu să reziști impulsului de a rezolva problemele de tip client-server altfel decât printr-o aplicație de tip web. Simplitatea în folosire, în primul rând ( clientul nu are nevoie de nimic altceva decât de un browser) este un avantaj extraordinar față de orice altă tehnologie care ar presupune ca pe stația de lucru a clientului să instalezi un program prin care să accesezi aplicația. Există nenumărate dezavantaje, dar dacă te gândești că vei avea de întreținut o aplicație pe cele trei principale sisteme de operare aflate în uz ( XP-ul, care nu prea se lasă dus, Windows 7 și Windows 8 ) , plus MacOS și una-două distribuții de Linux te vei înrola voluntar în marea oaste a programatorilor de aplicații web, în afară de cazul fericit în care ai avea suficienți clienți dispuși să plătească acest suport. La aceasta puneți la socoteală și faptul că folosirea laptopului personal pentru lucrul de acasă e o situație curentă, plus noua revoluție a mobilelor care te face să pari depășit în cazul în care nu poți accesa aplicația cu astfel de dispozitive.
Lumea tehnologiilor web este un adevărat talmeș-balmeș de componente mai vechi sau mai noi.
Avem mai întâi limbajele de nivel înalt, compilabile. Java are fani înverșunați și critici acerbi, oricum oferta de job-uri în domeniu pare constantă, deși ca impresie generală ar părea în pierdere de viteză. Există o oarecare circumspcție în ceea ce privește acest limbaj, atăt datorită achiziționării SUN, “părintele” Java, de către Oracle ( totuși pare plauzibil că Oracle va încerca să promoveze în continuare acest limbaj, pe de o parte ca strategie de combatere a principalului concurent, Microsoft, iar pe de altă parte, ca metodă de a “securiza” dezvoltarea aplicațiilor pe propria lor tehnologie), dar probabil, sau mai ales, există o circumspecție legată de cantitatea destul de mare de software prost scris în Java existentă pe piață. Am avut ocazia să analizez software comercial scris în Java și am realizat că de multe ori acest limbaj e preferat datorită rapidității de a scrie cod mult și dubios. În plus, Java are o istorie plină de incompatibilități între versiuni și probleme de securitate, probabil inevitabilă atâta timp cât dezvoltarea sa a fost simultană cu dezvoltarea Internetului.
Microsoft a lansat acum mai mulți ani propriul limbaj de programare web, C#, promovând tehnologia sub numele de .NET. Deși inițial părea o șansă extraordinară de a scrie un limbaj web bine închegat ( pentru că venea într-un moment de relativă maturitate a tehnologiei web) în mare parte tehnologia a repetat greșelile Java, complicându-se în versiuni incompatibile și nenumărate patch-uri. Probabil Microsoft era singura companie care ar fi putut susține în epoca respectivă o nouă tehnologie cu șanse de reușită; în acea vreme Linux pe desktop era o poveste, Apple era în recul iar dispozitivele mobile încă nu apăruseră, deci limitarea tehnologiei la Windows nu era o problemă majoră. Microsoft a dezvoltat între timp împreună cu Novell proiectul Mono, o implementare pe Linux a .Net.
Cert este că în final tehnologia lor nu a devenit nici dominantă, dar nici nu a dispărut de pe piață; ajutată de aparatul de marketing dar mai ales de tool-urile de dezvoltare ale companiei, pare destul de activă și de folosită.
Pe lângă acestea, preferate de multe ori în mediul “corporate” datorită avantajelor specifice ( tooluri de dezvoltare, orientare spre obiecte care permite lucrul în echipe mari, limbaje compilate care cel putin în teorie produc cod – bytecode în cazul Java – mai eficient) niște proiecte pornite inițial de la scopuri mult mai modeste încep să ocupe spațiul web.
La începuturi, php a pornit ca un proiect personal, un fel de extindere a paginilor HTML în zona programării. Simplitatea în folosire și faptul că funcționa pe popularul server Apache l-a transformat destul de repede într-o vedetă a proiectelor mici și medii. Chiar dacă programatorii tradiționaliști când se referă la autorii de cod php scriu termenul “programator” în ghilimele ( în definitiv software-ul interpretat nu se compară cu cel compilat, nu? ) în final se obțin rezultate la fel de bune, poate chiar mai bune, din pricina integrării interpretorului în serverul de web și poate, din pricină că există funcții predefinite cam pentru orice operație pe care un programator clasic ar trebui să o scrie.
Deja php este standard “de facto” pentru codul “server side”, adică cel rulat pe server.
Din nefericire, uneori și clientul, stația noastră de lucru adică, mai trebuie să facă unele prelucrări. Pentru asta a există de multă vreme infamul JavaScript, un limbaj cu atâtea moduri de comportament câte browsere există. Lansat de Netscape, JavaScript a fost un fel de “armă secretă” în războiul browserelor: atâta timp cât Internet Explorer a avut dominanță pe piață, Microsoft a introdus diverse extensii nestandard, care funcționau doar pe acesta și erau critice în accesarea diverselor servicii pe serverele lor. Chiar și acum, Banca Transilvania care a avut ideea nastrușnică de a folosi serviciul de certificate al Microsoft mă obligă să folosesc Internet Explorer dacă nu apelez la un token hardware.
Acum însă peisajul s-a schimbat radical și nevoia de a a scrie aplicații care să funcționeze pe orice browser este presantă. Cum Microsoft a pierdut dominația pe piața browserelor, a devenit un partizan vocal al standardizării. Au apărut tehnologii bazate JavaScript, precum Ajax; volumul de cod pe care în rulează în mod obișnuit un browser a crescut exponențial. Google și-a scris editoarele compatibile cu suita office în Ajax.
În continuare JavaScript luptă cu “greaua moștenire” a incompatibilităților de tot felul, a lipsei tool-urilor de dezvoltare ( multă vreme a funcționat doar ca un auxiliar neimportant) , însă direcția pare stabilită. Probabil că ne vom lovi din ce în ce mai mult de el în viitor, cel puțin în acest moment pare buturuga mică de care s-ar împiedica oricine ar avea infatuarea să o neglijeze.
Probabil nu ati aflat de Vagrant , Yeoman, Bower, Grunt ,Gulp sau simplul make si alte porcarii deastea insignifiante care simplifica develpmentul , preocupat cu evanghelia Microsoft.
Eu personal nu ma ocup cu dezvoltarea software decat tangential. Recunosc ca nu am folosit tool-urile citate de dvs si a fost a doua experiență mai consistentă cu javascript ( ei, chiar make… drept cine mă luați? :) ) , dar tool-urile de javascript chiar sunt la inceput, prin comparatie cu cele „clasice”. In ceea ce priveste „evanghelia”, vă rog să recitiți articolul . Ne place sau nu, Microsoft face parte din joc, nu putem să îi ignorăm când vorbim de computere.
Talmes-balmes este cel mai precis termen de a descrie ce se intampla in lumea tehnologiilor Web. Mi-a placut. Intr-o organizatie cu mii de utilizatori a devenit un cosmar sa executi un upgrade de aplicatie care necesita o noua versiune de browser, un alt pachet Microsoft, etc. Exista atat de multe dependinte care uneori merg in contradictoriu… Dar progresam! :-)
Cel mai bun lucru e sa educi utilizatorul final si sa-l responsabilizezi prin obligatia de a folosi o aplicatie standard
sigur ca aici intra si costurile,beneficiile si asa mai departe
pt ca in Romania toti sunt saraci si asa mai departe
Dar pe de alta parte se poate face o aplicatie web nu neaparat in Java ci in HTML5
care arata la fel pe orice browser(sigur ca daca clientul are un Ipad cu rezolutie mare va veadea imaginile drept purici si daca nu are rezolutie suficienta nu va vedea complet pagina fara sa faca scroll:)))
Ceea ce ma enerveaza cu adevarat e ca majoritatea isi fac paginile web pe 800*480 sau 800*600 pt cei care au monitoare mici si vechi
astfel ca pe al meu monitor de 1680*1050 se lungesc liniile raman spatii negre uriase si vede naspa
Ideea e ca daca nu ai curajul sa-ti valorizezi munca la adevarata ei valoare pierzi bani
Imi permit cateva observatii la articolul dumneavoastra:
1. Vorbiti despre Java in legatura cu aplicatiile web. Java e un limbaj de programare folosit inclusiv pentru aplicatiile desktop. Pentru aplicatii web, se foloseste java script, care nu ruleaza pe server, ci pe client. Si e, intr-adevar, o oroare, la fel cum e si limbajul Java in aplicatiile locale. Dar asta nu face ca Java sa fie un limbaj „pentru tehnologiile web”, nu mai mult decat ar fi vb script sau visual basic in ASP.
2. C# nu e un limbaj de programare web, iar .NET nu e o platforma conceputa pentru aplicatii web. .NET e un framework ce da posibilitatea rularii de aplicatii managed pe diferite arhitecturi, fara a fi nevoie de versiuni specifice fiecarui tip de procesor sau fiecarei versiuni de OS. Mono si .NET sunt doua implementari ale CLR (common language runtime) si nu sunt destinate anume pentru desktop sau server. Exista aplicatii asp.net, care ruleaza pe un server de IIS, intr-un application pool care, la randul lui, ruleaza pe o versiune de .NET. La fel cum exista si aplicatii .NET de desktop. Tehnologia .NET in sine nu a fost conceputa pentru web sau desktop.
3. Spuneti ca .NET e blocat de tot felul de patch-uri si incompatibilitati intre versiuni. Este fals. O aplicatie .NET nu are nevoie de diferite pachete, update-uri sau fixuri instalate pe masina, pentru a functiona. E nevoie doar sa aiba .NET instalat, versiunea pentru care a fost scrisa aplicatia, sau o versiune superioara. Backwards compatibility la .NET merge pe doua segmente: .NET 3.5 SP1 ruleaza toate versiunile anterioare si .NET 4.5.2 ruleaza tot ce e mai jos, pana la .NET 4.0
4. PHP nu are nicio legatura cu interpretorul din browser. Acela e pentru limbajele de script: vezi java script sau vb script. PHP e rulat pe server, la fel ca ASP sau ASP.NET. Iar programatorii „cu pedigree” nu stramba din nas din cauza ca ar fi un limbaj interpretat, ci pentru ca e un talmes-balmes, dificil de organizat intr-o arhitectura coerenta, in cazul unui proiect mare. E un fel de ASP (cod + html in aceeasi pagina) mai modern.
1. Da, Java a fost scris pentru telecomenzi, dar pentru ca e multiplatforma si poate fi rulat pe desktop si-a datorat popularitatea aplicatiilor web.
2. Observatiile sunt aproximativ valabile si pt c#. Tocmai pentru ca sunt multiplatforma, tehnologiile se preteaza la folosirea web: codul este descarcat prin intermediul browserului si executat pe desktop. Evident ca se poate folosi si fara web.
3. Tocmai la acest tip de incompatibilitati ma refer, doar perspectiva din care le privesc difera Daca vrei sa dezvolti o aplicatie pe termen lung , fie te limitezi la versiunea originala si pierzi noile „features” , fie produci diverse versiuni ale softului, fiecare cu .net-ul ei, ceea ce mi se pare … neplacut.
4. „din pricina integrării interpretorului în serverul de web „. Nu spuneam eu asa prostii, dar am recitit textul ca sa fiu sigur :)
Revin, totusi :)
Ar trebui sa facem o diferentiere intre aplicatiile web si aplicatiile distribuite pe web. Sunt de acord ca aplicatiile distribuite pe web care ruleaza pe masini virtuale (java/.net) sunt mai accesibile, dar asta nu le face aplicatii web. Ele raman independente de server, ceea ce le aduce cam in acelasi palier cu o aplicatie nativa c/c++/asm/mfc’/etc. Nu stiu foarte bine istoria Java si sunt curios ce a facut limbajul asta sa aiba o atat de mare popularitate. Presupun ca posibilitatea de integrare a unui app in pagina web si rularea embedded, gen flash/silverlight. Recunosc, m-am ferit mereu de orice tinea de Java, pentru ca ma enervau la culme toate update-urile pe care imi cerea sa le instalez pe browser sau pe masina.
Dificultatile legate de versiunile de .net devin destul de usor de depasit in ultimul timp, in special pentru ca .net vine ca parte din OS odata cu noile versiuni de windows (3.5.1 in ws2008/win7, 4.0/4.5 in ws2012/win8). Tinand cont ca un kit de instalare poate fi configurat sa instaleze si versiunea de .net la prerequisites, ca e foarte posibil ca .net sa fie deja instalat, ca nu ai un milion de pachete si de updates, deja devine destul de usor pentru utilizator. Cu exceptia unor scenarii specifice, back si forward compatibility sunt usor de gestionat in .NET. In comparatie cu ce ofera Java sau c++ cu ale sale diferite runtimes si dll-hell, o consider cea mai buna optiune. Dar deja nu mai suntem in zona web dev aici.
Ar fi interesant un articol despre lumea tehnologiilor mobile, dezvoltare inter-platforme, diferite devices pentru acelasi mobile OS si/sau conectarea la cloud.
Ok, daca e sa fim precisi, aveti dreptate. Eu am intenționat să fac o prezentare a tehnologiilor care se folosesc pentru dezvoltarea web, unele din ele nu se folosesc doar la asta sau nu au fost inventate pentru asta.
Java ( atât cat am avut eu de-a face, nu sunt programator decât tangențial) este ca principiu destul de bine închegat și structurat, în ciuda sintaxei prolixe. Doar că programatorul mediu nu se complică prea mult cu mecanismul de tratare a erorilor de exemplu si le „throw to system” pe toate, asa ca dv gresiti parola iar aplicatia va spune „system exception” :)
Da, acum Java si-a gasit o alta intrebuintare in lumea mobilelor, dar popularitatea initiala s-a bazat pe acele applet-uri de care ziceti: acum mai multi ani era cam singurul mod in care puteai sa executi aplicatii client-side intr-o maniera previzibila, pentru că engine-ul Java era acelasi indiferent de platforma (bine, versiunile… ) . Sigur ca .net a venit mai tarziu si cate ceva a mai invatat din greseli, nu chiar destul, dar … asa e, e ceva mai bine, sunt mai putine versiuni, pot fi instalate simultan in sistem ( la Java aveai nevoie de diverse artificii pentru asta). Oricum am întâlnit destule aplicații Java scrise bine și care funcționează bine.
Despre cloud am mai scris mai mult sau mai putin tangential, probabil ca o sa mai scriu ca e la moda si se tot vorbeste, de aplicațiile mobile nu prea m-am ocupat (deocamdată) dar aparent nu voi avea incotro in viitor….