"Webapps gaan desktop applicaties inhalen"
Om mezelf te quoten:
De meeste webapps zijn nog jong, maar geef het wat tijd en de functionaliteit van desktop apps word ingehaald.
Je quote me verkeerd, afgezien nog van het feit dat je mijn quote uit context trekt. Daarnaast ga je volledig in op performantie, waar ik het over functionaliteit heb. Mijn bovenstaande relaas over performantie gaat over het goed werken van webapps in de browser. Dat is redelijk nieuw, we hebben nooit snelle browsers gehad [die zich ook nog eens behoorlijk aan standaarden houden].
Sommige webapps halen qua functionaliteit al desktop apps in. Neem GitHub: alle andere git GUI implementaties zijn slechts in alpha status, en halen het bij lange na niet bij de funcitonaliteit die Github biedt.
Het compleet implementeren van Eclipse is namenlijk niet alleen een kwestie van text editeerbaar te maken, maar er zal tevens een parser en een indexer op de achtergrond moeten draaien.
Dat hangt ervan af hoe je "compleet implementeren van Eclipse" ziet. Zoals ik in mijn tweede alinea al aangaf, is het al mogelijk om full-fledged Eclipse in de browser te gebruiken, zonder enige plugin. Je werkt dan met remote desktop via het VNC protocoll.
Je hoeft niet de complete engine te porten naar javascript. Je kan immers veel logica gewoon op de server draaien. Laat dat nu net het gehele voordeel zijn, en de kern van het internet: het netwerk-effect.
Als ik naar Javascript kijk is er volgens mij geen geschikt support voor threads
Dan ben je inderdaad niet goed ingelicht:
lees wat John Resig ervan zegt. Niet helemaal threads, maar zeker een goed alternatief in veel gevallen.
Jouw betoog faalt omdat je de assumptie maakt dat de gehele engine in javascript moet worden geimplementeerd. Dat hoeft niet; je kan gewoon serverside compilen en het resultaat naar de browser sturen. Dat werkt nog sneller dan je IDE draaien op je laptop/workstation: een server heeft al vrij snel *veel* meer resources tot zijn beschikking dan jouw workstation.
In je laatste alinea lees je weer niet goed: ik heb het over een versiebeheersysteem (VCS=Version Control System), niet over de implementatie
CVS. Daarnaast maak je de assumptie dat code niet gecompileerd is voordat je het commit naar een VCS. Het zou prima kunnen dat de app die bepaalde functionaliteit implementeerd/biedt dat gewoon doet. Afgezien nog van dat het in veel gevallen prima is om code te submitten die niet gecompileerd is.
[Reactie gewijzigd door Ruudjah op maandag 17 januari 2011 11:30]
Webapps gaan bepaalde desktop applicaties inhalen
Was misschien wat duidelijker geweest. Ik ben ervan overtuigd dat een aantal applicaties goed zijn te programmeren als Webapps. Ik gebruik al jaren web-based mail-clients. Een simpel document creeeren wil ik ook nog best geloven kwa webapp (alhoewel ik toch liever zelf de regie over mijn documenten in handen heb). Maar verwacht echt niet dat software zoals: AutoCad, PhotoShop, IDEs met de huidige generatie browsers goed te implementeren zijn. En bij vele zaken zou je jezelf ook kunnen afvragen: is het wel geimplementeerd in de browser of is de browser gewoon uitgebreid. Over 50 jaar is er vast wel iemand zo gek om een video-encoder te schrijven in Javascript, maar tot dan toe ben je afhankelijk van wat de browser-bouwers jou als programmeur aanbieden (en dat is op dit moment flash, WebM, H.264). Ook 3D ondersteuning in Browsers is natuurlijk een wassen neus; Je kunt als programmeur een model en textures naar de browser sturen en zeggen: "teken dit maar voor mij", als je meer wilt zul je moeten gaan wachten op de brouwser bouwers of je toch echt gaan verdiepen in een wat performantere taal.
Je VNC voorbeeld is natuurlijk prachtig, maar VNC is geen web-browser en als het al in de browser draait dan is het een plugin. Voor de rest is in een dergelijk geval het probleem alleen verschoven van de desktop naar de server. IPV een goede desktop neer te zetten kun je volstaan met een zeer eenvoudige machine van 200-300 en een goede server van 2000-3000 euro (ik vergeet eventjes de extra investering in het netwerk). Je kunt dan met zijn 4 nog enigszins werken. In plaats van een dergelijke opstelling had je echter ook kunnen kiezen voor 4 stevige desktops a 600-700 euro per stuk dan zit je op een zelfde bedrag. Ik persoonlijk zou eerder voor de laatste opstelling kiezen.
Zoals ik bovendien al zei: threads zouden er ondertussen alwel ingeprutst kunnen zijn. En dat klopt blijkbaar, maar ik mis toch ondersteuning in de taal zelf: Java was met zijn synchronized blocks (afgezien van de initieel buggy implemetering van Sun) een stap voorruit t.o.v C/C++. Van een redelijk nieuwe taal zoals Javascript zou toch verwacht mogen worden dat ze weer een stap voorwaarts doen, maar ipv voorruit gaan ze letterlijk een stap achteruit. Synchronized blocks bestaan gewoon niet, uit de opgestuurde link kan ik een message-queue herkennen, maar ik mis oa: semaphores, atomic values, locks.
[quote]Jouw betoog faalt omdat je de assumptie maakt dat de gehele engine in javascript moet worden geimplementeerd.[/quot]
Mijn betoog valt helemaal niet. Ik heb even naar het project gekeken en er wordt inderdaad een server geimplementeerd te worden. Het blijft een client/server applicatie, waarbij de client verheven is tot een domme presentatie laag. Als je naar de huidige Eclipse kijkt dan zul je zien dat eclipse bovenop SWT (Java) gebouwd is, dat weer bovenop GTK(C) gebouwd is, dat weer bovenop GDK gebouwd is dat weer bovenop X11 gebouwd is (iig op Linux). X11 is in prinicipe al client server, er worden mooie binaire pakketjes over het netwerk gestuurd (BTW: Ubuntu heeft plannen om X11 te vervangen door Wayland server en volgens mij mede door de verdacht van het vertragen door deze client/server benadering). Bij een Webclient is de opbouw vergelijkbaar, maar ipv binaire data wordt er XML/HTML/Javascript in UTF8/ASCII heen en weer gestuurd waarbij de client en server voortdurend bezig zijn met vertalen. De SWT laag kun je dan nog weer vervangen door een Javascript laag en je hebt de absolute totale CPU-cycle verslindende applicatie gebakken. Ik zie bovendien in een thuis situatie helemaal niet in waarom ik een client/server applicatie moet installeren als het ook in 1 applicatie kan.
Dat werkt nog sneller dan je IDE draaien op je laptop/workstation: een server heeft al vrij snel *veel* meer resources tot zijn beschikking dan jouw workstation.
Dat wil ik best geloven, maar zou je ook even naar de prijskaartjes willen kijken !
Afgezien nog van dat het in veel gevallen prima is om code te submitten die niet gecompileerd is.
Een redelijk gevaarlijke uitspraak zou ik zo zeggen.
Webapps gaan bepaalde desktop applicaties inhalen
Wie of wat quote je nu? Mij? Jezelf?
Maar verwacht echt niet dat software zoals: AutoCad, PhotoShop, IDEs met de huidige generatie browsers goed te implementeren zijn.
Waarom niet? Een browser hoeft in principe alleen maar een UI te bieden. Het gehele object model hoeft niet per se in de browser geladen te worden, dat kan ook voor een groot gedeelte op de server blijven.
Als je niet gelooft dat "zware" software in de browser kan:
Quake in je browser. Da's een voorbeeld waarbij ook het gehele object model leeft in je js virtual machine.
en als het al in de browser draait dan is het een plugin.
Als je even op de Guacamole link had geklikt, had je kunnen lezen dat Guacamole werkt met een WebSocket proxy. En vervolgens de input tekent op een canvas element. Niks plugin dus. Allemaal 100% html/javascript.
Ook 3D ondersteuning in Browsers is natuurlijk een wassen neus; Je kunt als programmeur een model en textures naar de browser sturen en zeggen: "teken dit maar voor mij", als je meer wilt zul je moeten gaan wachten op de brouwser bouwers of je toch echt gaan verdiepen in een wat performantere taal.
Ooit gehoord van
WebGL? Webkit (Chrome, Safari) ondersteunt het al, Opera is bezig en Firefox heeft ook al builds die een aardig eind op weg zijn.
4e alinea
Eclipse Orion levert een headless Eclipse met daarop een 'schone' js/html implementatie voor de UI. Niks swt/x11/gtk/gdk.
Ik zie bovendien in een thuis situatie helemaal niet in waarom ik een client/server applicatie moet installeren als het ook in 1 applicatie kan.
Ik wel. Een 16-core server die 1mW idled maar mijn code razendsnel kan compilen lijkt me wel wat. En dan met een webapp in 1 click code kunnen delen met de rest van de wereld via een webinterface. Of samenwerken met vrienden/kennissen/familie.
Een redelijk gevaarlijke uitspraak zou ik zo zeggen.
Neuh. Genoeg dsl's die geen compilatie vereisen of zelfs geen compiler hebben. Succes met het compilen van je svg code. Of je html.
[Reactie gewijzigd door Ruudjah op maandag 17 januari 2011 14:10]
HAHA we kunnen het niet echt eens worden met elkaar ...
Waarom niet? Een browser hoeft in principe alleen maar een UI te bieden. Het gehele object model hoeft niet per se in de browser geladen te worden, dat kan ook voor een groot gedeelte op de server blijven.
Ik herhaal het nog een keer:
DEs met de huidige generatie browsers goed te implementeren zijn.. Ik zei niet dat het niet mogelijk was. Ik heb duidelijk aangegeven dat er over 50 jaar waarschijnlijk decoders geschreven zullen zijn in Javascript en over 10 jaar geloof ik best dat de huidige versie van PhotoShop, AutoCad of Eclipse te programeren valt in browsers mbv Javascript. Ik twijfel alleen of de energie die er in gestoken wordt zich loont.
Quake in de browser heb ik al gezien. Zoals ik al vermeld had; het render gedeelte wordt door OpenGL (lees WebGL) afgedekt, Javascript stuurt het alleen aan. Niks extreem complexe Javascript code. Op de eigenlijke vraag 'schrijf ik een web-based app of een desktop app' kan ik in dit geval alleen maar antwoorden: waarom is de miljarden game inudstrie nog steeds niet massaal op web-based games gesprongen ?
Eclipse Orion levert een headless Eclipse met daarop een 'schone' js/html implementatie voor de UI. Niks swt/x11/gtk/gdk.
Wel even de echte stack opsommen: op de server: web-server/Eclipse-orion. Op de
thin-client: X11/GDK/GTK/FireFox(of Chrome, ...)/Javascript/Eclipse-orion-client.
Een 16-core server die 1mW idled
1 mW of 1 MW ? Ik twijfel een beetje aan een 1 mW 16 core idle processor. Verder nog wel even meerekenen de switch en de thin-desktop clients.
Genoeg dsl's die geen compilatie vereisen of zelfs geen compiler hebben.
Hier kan ik gewoon niet serieus op ingaan.