Developing Interactive, Scalable HTML5 Apps on the Cheap: Serverless, Unhosted, No Backend, BAAS, PAAS, Oh My
But one problem in particular has been my biggest hurdle, which I discuss more here: the cost of scalable hosting. With “old-fashioned” desktop apps or single-user applets or web animations or games, you can fire and forget it. Develop your app or site, slap it up on the web, and people download it or visit it and use it. Static web hosting is practically free (like this WordPress blog). However, if you want social features, persistence (database), or other things like that, you need to have a database or other backend at minimum, and it needs to be able to scale. I’ve always had my hopes up for Drupal - it is still my favorite go-to solution for social but non-interactive web applications, and several folks are using Drupal as a backend for HTML5 or mobile apps, but it is not so easy or so cheap to scale up. A lighter weight alternative to Drupal, perhaps built on node.js and MongoDB, has not yet emerged.
The Serverless, Unhosted, No Backend Options
Anyway, so, one hurdle to developing interactive educational HTML5 applications on the web is the cost of scalability. Web hosting is cheap (or even free) at the beginning, but can quickly spiral out of control and sometimes lock you into a proprietary platform (like google appengine). I could get a grant, but what about when the funding runs out? I could beg for money by posting my ugly mug at the top of every page like Jimmy Wales did on Wikipedia, but I’m not a sadist. I’m not a venture capitalist/entrepreneur, and unfortunately, I’m not at a university that supports or provides web application hosting (I used to be able to just run apps off the computer under my desk as an undergrad, grad, and professor, or by running cheap virtual private servers for as little as $15/year when scaling up wasn’t much of a concern).
Here are some sites that describe lower-cost, open source, and scalable cloud hosting solutions, by either letting visitors host their own data (in their browser’s local cache, or on dropbox or google drive or another site), or by using a cheaper backend-as-a-service that your front-end connects to. [Really, none of these (except WebP2P) are completely "serverless", and many do not eliminate the costs, either, but it is progress.] Various terms have been used for some of these concepts: serverless, no backend, unhosted, and there are also new and cheaper cloud hosting services that provide a backend-as-a-service (BAAS) or a platform-as-a-service (PAAS).
- No Backend – “a new approach to build data driven apps without thinking backend.” See the solutions and examples listed.
- Unhosted – “freedom from web 2.0′s monopoly platforms” – came before the “No Backend” movement and looks to be completely open source and not tied to one third-party platform. Their site also lists various tools and example apps that let users control their own data.
- Nimbusbase is an interesting option that uses Google Drive or Dropbox to store your user’s data.
- And here’s a sample PouchDB & CouchDB-based conference scheduling app that also works offline. (Just as some have stated a mantra that we should develop HTML5 applications “mobile first“, some have also stated that we should try to develop with “offline first” support, too, and to that I would also add “accessibility first“)
- WebP2P (peer-to-peer) is an effort that builds on top of WebRTC (real-time communication) to allow for truly serverless web apps – apps that connect from browser to browser. It is still very new, and only supported by bleeding edge versions of Chrome and Firefox (although there is a WebRTC datachannel polyfill to fill in some of the functionality for other browsers). See the WebP2P mailing list and WebRCT Google+ page for more info and examples.
- ShareIt, based on DirtyShare, is a proof of concept that allows you to share files from your browser
- PeerJS wraps the WebRTC implementation to provide a complete, configurable, and easy-to-use peer-to-peer data API.
- Open Peer is another WebRTC-based P2P Protocol & Specification
- GrimWire is a RESTful Browser OS that does Peer-to-peer over WebRTC. It is built on the Local framework, which allows you to securely run user applications on the page using Web Workers.
- KadOH (Kademlia Over HTTP) is a framework to build P2P applications for browsers and node.js. By implementing the basis of the Kademlia DHT used for decentralized peer-to-peer networks.
- hackview is a webRTC based multi-person video chat with a collaborative editor
- There are several other WebRCT based video chat apps and demos: appRTC is a basic demo, veckon is more polished, conversat.io adds a lunar lander game for you to play while waiting for others to join you, and the folks at Mozilla have a widget to embed video chat into your own website.
- There are various WebRCT SIP/VOIP gateways becoming available.
- The AirTheremin uses WebRTC and the Web Audio API to let you control sounds using gestures in front of your webcam
- Data URIs – New browsers support very long URLs, and you can actually store quite a bit of data in it, such as text or even an image.
- Shortly is a serverless pastebin service that uses this technique
- The webSemantics Data to URI Converter will convert your image to a data URL
- DataURL will similarly convert files or images to data URLs for embedding in HTML or CSS files
- Back toward more server-centered strategies, the Backend-as-a-Service (BAAS) and Platform-as-a-Service (PAAS) Wikipedia pages list several cloud hosting providers, none of which really solve the cost issue, because you still have to pay for scaling up, but they can be cheaper on the whole than prior solutions.
- OpenShift by RedHat is an open source PAAS that I have found very interesting, and it appears to be very reasonably priced (and free for the entry level). You can host anything with it, node.js, Drupal, Java, etc.
- The BAAS market appears to be a very hot topic at the moment (see this BAAS ecosystem map), especially after one provider, Parse, was bought out by Facebook. But Apstrata is one that looks interesting, because you only pay by the number of users you have (under 500 is free), and it is made to work with Dojo Toolkit (and other options), which as I mentioned is accessible and also incredibly full-featured.
For an older article that hinted on this “serverless” trend, see Why The Future Of Software And Apps Is Serverless, and a newer article explores the No Backend movement in more detail: NoBackend: Front-End First Web Development.
Here are slides for a talk I’m giving to my university about issues to consider before offering MOOCs or accepting MOOCs for credit.
I also participated in a webinar about MOOCs for corporate learning, hosted by Jeanne Meister of FutureWorkPlace. A few slides related to that are at the end of the above presentation.
My last advice to both groups is that, even if you decide to not go with MOOCs today, keep a close eye on them. MOOCs are evolving extremely rapidly, both technologically and pedagogically. See for example these MOOCs that are pedagogically more interesting than just videos and quizzes: Passion Driven Statistics, Learning Creative Learning, and the Open Learning Design Studio MOOC I mentioned in my previous post about pedagogical issues with MOOCs. There are also millions of dollars being invested in MOOC development, with both new and old tools evolving to accommodate the unique demands of MOOCs. Several MOOC platforms are emerging, both free (Instructure’s Canvas.net, Blackboard’s CourseSites, Google+ Communities and Hangouts and other Google Apps) and open source (Class2Go, OpenMOOC, CourseBuilder, edX, P2PU, WordPress).
So 6 months from now, a year from now, MOOCs may look quite different.
And my first advice to everyone is: try a MOOC out for yourself. That’s the best way to better learn about them.
First let me start with some disclaimers to try to make sure this post is not misinterpreted: I am not arguing that the mouse and keyboard are really dead or that the lack of a mouse on tablets is a bad thing. I am not arguing that the ipad or similar devices are awful for education or content creation. I am just thinking about how to make them even better in these areas, and conceptual and technological roadblocks in the way. Some of the criticisms of the ipad as a content consumption device (here, here), have been addressed with the ipad 2 and other new android tablets with their inclusion of cameras and input ports, and some tablets are even coming out with a stylus, like the HTC Flyer.
But imagine any creative person – creating a 3d character for a game, drawing a picture, composing a music score, creating a graphically rich document or presentation, etc. They likely have something in their hand, or their hands are busy doing something. When that involves interacting with a computer they are likely clicking the mouse to drag something around or edit text, for example, or using a stylus on a digitizer surface (like a wacom) for drawing, or typing away on a keyboard.
These input devices are all essentially gone on new tablets and smartphones. You can still type (slower) on virtual keyboards, and you can click like a mouse with your finger (tap).
An example of the impact of this is rich text editing, like with a word or openoffice or google docs document. Many browser-based wysiwyg editing tools, which are used virtually everywhere, such as in moodle (which uses the TinyMCE editor) or drupal, no longer work when you access them from an ipad or iphone or android device (or other mobile platforms like blackberry or palm webos). Even the newest “HTML5″ editors, such as Aloha Editor, pop up an error message if you try to access them from a mobile device. Other browser-based editing and drawing tools also no longer work on these new platforms, or you have to draw with your fingers. Most of Google’s and others’ tools like Google Presentation do not work on mobile platforms. Really, just imagine most any software people use on a desktop to create stuff – like office, or the flash ide, or gimp/photoshop, blender 3d, etc. Even when programming, which really is just typing in plain text, we usually prefer to use IDEs that popup suggestions and corrections to help us out. For many of our desktop apps its hard to even imagine them working on a tablet or phone.
The rich text editing tools in browsers like TinyMCE or CKEditor primarily rely on the contenteditable HTML attribute to support editing. Add that attribute to an HTML element, and the contents of that element become editable inside the web browser. It works in all browsers, including old Internet Explorer versions. It doesn’t really work well or even at all on mobile browsers though (see here, here, here, here).
Newer versions of android, webkit, and mobile firefox have been slowly improving their support for contenteditable, and maybe they will eventually “fix” the issue, but I’m not sure that this will be fixed through engineering alone. Some code editors like codemirror 2 and the ace editor are trying out workarounds like using a hidden textfield that captures key presses. Codemirror 2 works on an ipad somewhat, the ace editor does not. It remains to be seen if a similar trick might work for a rich text editor (it’s tricky enough just to do it for plain text). And like I said, the HTC Flyer and other tablets (esp. those being designed for medical and other professionals) are starting to include a stylus, and it remains to be seen if that will catch on (it didn’t before with older tablets). Others are coming out with dual screen tablets, where the second touchscreen can work like a touchpad on a laptop or nintendo ds, but that also may not catch on.
Another more general alternative strategy to this issue of tablets having no mouse or other input devices other than the touchscreen and the camera (which can be used for gestural or other input), might be to conceptually rethink how to support multimedia creation on these mobile platforms. Perhaps we should drop the notion of “documents” or “pages”. After all, you don’t think of a flash widget as a page or document. You don’t think of a game as a set of pages or documents. And Apple and other developers have already created apps for some specialized types of content creation and creativity, such as musical instrument simulators and so forth.
So, this may be a pre-paradigmatic moment where we’ll see what catches on: will we try to perfectly “emulate” the mouse and stylus and its supported interactions via other means such as gestures, or will new and unique types of interactions continue to catch on (like multitouch stuff). Probably a combination of both, but so far the camera is hardly being used at all for input, other than recording videos or taking pictures. And some may dismiss the idea of a stylus ever catching on again, but Apple has occasionally made “mistakes” before (the first mac didn’t have a floppy drive, for example), and others have been successful in incorporating a stylus, like the Nintendo DS, which my little boy continually loses
- Browser-Based IDEs – this is the future, I believe – doing coding in the browser. Some updates are discussed below (cloud9 IDE, and a web-based version of eclipse)
Here are some interesting new software projects and libraries and tools I’ve run across since my previous HTML5 post:
- http://www.mobl-lang.org/ and https://github.com/mobl
- Modkit is basically a version of the Scratch graphical programming environment, but it works in the browser. Not yet released, but coming soon.
- HTML5 Canvas libraries
- CAAT http://labs.hyperandroid.com/animation and https://github.com/hyperandroid/CAAT/
- Unveil.js https://github.com/michael/unveil – Has support for not using up the processor when it is not needed
- easeljs http://easeljs.com/ – Created to be like flash with display lists and so forth, by flash developers. Works with jquery I believe.
- doodle.js http://lamberta.posterous.com/doodle-js and https://github.com/biilly/doodle-js
- artisan.js http://artisanjs.com/ and https://github.com/davidbrooks/Artisan
- sprite.js https://github.com/batiste/sprite.js
- gury https://github.com/rsandor/gury – Works with jquery
- New game libraries
- Gesture recognition libraries
- Browser-based IDEs
- In June or so, look for an initial release of a web-based version of the Eclipse IDE, codenamed Orion
- 3D Multiuser World
- It has long been a holy grail of the edtech world to have a multi-user virtual world for students and teachers to use. There already is Second Life (and it’s mono-based open source clone OpenSim) and Open Wonderland (java-based), but now with WebGL, it’s possible to create such a thing that works in the browser, and Katalabs has done so, releasing a prototype of their open source virtual world software called Kataspace. Requires a recent version of firefox or chrome – see the Learning WebGL site for more info on WebGL.
- BASIC in the browser
- Smalltalk/Squeak in the browser
- Real-time Collaboration/Editing
- IBM just announced the Open Cooperative Web Framework, which uses Dojo and other libraries for real-time collaboration in the browser. Targeted for things like collaborating during a conference.
- Realie is a web-based real-time collaborative editor, similar to etherpad. Unlike etherpad, it is coded with node.js and websockets: http://laktek.com/2010/05/25/real-time-collaborative-editing-with-websockets-node-js-redis/
- Here are some other browser-based collaborative real-time editors: http://en.wikipedia.org/wiki/Collaborative_real-time_editor#Browser-based
- Java Projects
- Visage http://code.google.com/p/visage/ open source port of JavaFX, which declarative markup for creating user interfaces
- Wireframes and Mockups, Sketches
- There are several new browser-based tools for visually designing interfaces (fake interfaces), some of which are HTML5-based or else Flash: http://speckyboy.com/2010/01/11/10-completely-free-wireframe-and-mockup-applications/
- Some open source ones include: http://www.k-sketch.org/ http://www.mdaines.com/plumb/ http://dub.washington.edu:2007/projects/sketchwizard/
- OpenSocial/widget development tools
- Socialtext has an HTML5 widget builder: http://www.readwriteweb.com/enterprise/2010/12/socialtext-introduces-html5-ba.php
- Exo is a competitor to Socialtext, and they also have a web-based IDE: http://exoplatform.com/company/en/resource-viewer/Video-Demo/building-web-app-with-exo-platform-3-ide
Like I mentioned in the previous post, the CES show next week promises to reveal a slew of new android tablets and phones, so we’ll see what is announced (and what is actually released).
Here are some android tips & resources I’ve run across in the past year:
- How to root the Droid (the first droid)
- How to root the NookColor
- How to read library e-books on an android tablet – right now the only official way is to use Adobe Digital Editions (ADE, which only runs on windows or mac) and use a device that ADE supports, such as the NookColor or Pocket Edge. Here’s an ADE video tutorial.
- If you’ve got an older android phone or tablet with only a few screens, I’d recommend LauncherPro or a similar app to improve your home screens. See this comparison between LauncherPro and other options like ADWLauncher.
- Keeping up with android news: See this twitter list for various sources like androidcentral: http://twitter.com/#!/edtechdev/android
- Places to find recommended, popular apps
- Open source apps – see these lists of open source apps and open source games (you’ll have to google to find the actual source though).
- Android development
Some free educational apps:
- X Construction Lite – bridge building game
- Google Sky Map – shows the names of stars, planets, constellations that you point at, using the accelerometer and compass
- There are apps or android-friendly mobile front-ends for Blackboard (requires university subscription) and Moodle (see also http://mle.sourceforge.net/ and http://code.google.com/p/moodbile/)
- Video podcasting is possible with apps from Qik or Ustream viewer or broadcaster
- Physics: space physics lite, space simulator, physics calculator
- Musical instruments: mypiano, guitar solo lite
- Programming: IProgram, scripting layer for android, ruboto
- Various math practice apps like Math Workshop or Math Attack
- Of course there are all the e-book reader apps such as Aldiko, Nook, Kindle, …
- See also AppBrain’s education section and this list of 101 best android apps in education
- See also the IEAR site for many educational apps, but they are mostly iphone/ipad apps at this point.
Some free games:
- angry birds, of course
- hungry shark
- falling ball
- hit the penguin
- air attack
- my paper airplane
- toss it
- winds of steel
- flying high
Here’s a taste of the current tools and frameworks out there for developers interested in learning more about this platform. Probably the first thing you have to decide though, is are you more interested in running your HTML5 app on mobile phones and tablets (iPhone and iPad’s iOS, Android, and to some extent Blackberry and Palm), or in a regular desktop browser (Firefox, Chrome, Safari, IE…), or both? Some tools for mobile web app development are listed below.
First, here are some places to keep up with this rapidly evolving field:
- Learning WebGL – for keeping up with 3D developments
- Some discussion groups: http://groups.google.com/group/iphonewebdev , sitepoint forum, codingforums, etc.
- The Changelog – They have a regular podcast which often features interviews with developers of HTML tools such as some of the ones listed below (Sencha Touch, Coffeescript, etc.)
- YUI – very java-like user interface toolkit from Yahoo, very complete and accessible. They have started adding mobile support (touch/swipe/etc).
- JS Optimizers – to compress/obfuscate and combine into one file your js code see Google Closure Compiler, YUI Compressor, JSMIN
- PhoneGap – has an open source permissive license. They support Blackberry and Palm and Symbian and so forth, as well as iOS and Android. They create a native webview wrapper for your HTML5 app, so that you can access native things such as the camera or sensors.
- Sencha Touch – built off of ExtJS and JQTouch – any app you develop with it either needs to be GPL or else you have to pay for a commercial license from them. Can work with PhoneGap, they have some nice demos, esp. for the iPad.
- Ansca Mobile – Corona SDK, better for game development, commercial license.
- appMobi – commercial, too, I believe
- Canvas tutorials
- ExCanvas – for making canvas work in internet explorer (IE 9 will support it I believe)
- RGraph – graphing library
- bluff – graphing library
- three.js – canvas-based 3d engine (not using webgl as the ones below)
- Painting/Sketching demos
- Sass and Compass – alternative to CSS – adds some smarter features to CSS like variables and so forth
- HAML – alternate to HTML, not as popular perhaps, or as needed as the above two, since there are 2000 HTML WYSIWYG editors out there.
- narwhal – an alternative to node.js
- npm – a package manager for node.js, similar to gem for ruby
- WebSockets – a new HTML5 feature that allows for better persistent server-client connections. You’ll find some demos around of multiplayer games and web pages that use websockets, and on github there are node.js websocket server examples. You need the Chrome browser or Safari or Firefox 4 beta.
- ExpressJS – server-side web application framework
- Spritely – nice sprite engine
- gameQuery – 2D engine
- Akihabara – for creating arcade-like games
- Copperlicht – WebGL 3D game engine
- GLGE – another WebGL game engine
- SceneJS – WebGL scenegraph library, see also the interactive, editable demos
- C3DL – Canvas 3D library
- Dextrose Aves Engine – commercial game engine in development, see this video talk
- tinygames – see their work (building off of karma edu and so forth) to create educational html5-based games (math only apparently).
- Physics Engines & Demos
Browser-based Development Environments
- See my earlier post Browser-Based IDEs, but also these:
- http://sketchpad.cc/ along with hascanvas and others work with processingjs for creating animations
- I mentioned it in the previous post, but the bespin editor continues to evolve and improve. It now supports code completion using jsctags.
- GUI Designers – really nothing out there that is finished and free and open source (see Ext Designer for a commercial option), other than of course free WYSIWYG HTML designers, but see these rough demos:
I currently have a small set of netbooks with Ubuntu Netbook Remix (download) installed that I use for various projects. If I were to set up a classroom netbook/laptop cart for a K-12 class or a school-wide 1-to-1 netbook/laptop program, I would follow what Jim Klein did as part of the SWATTEC program at the Saugus Union School District. They also used Ubuntu Netbook Remix, but with nice extras like a nice 10 second recovery system (by keeping system files in a read-only partition using UnionFS) and battery-life optimizations. The philosophy is, instead of locking down the machine, make it easy to recover from any mistakes (even the teacher can recover a netbook without needing tech support).
Karl Fisch blogged about how he implemented a variation on Jim’s program.
By the way, if you are in the market for school netbooks, or suffering from iPad envy, you might check out the $500 Eee PC T101MT touchscreen netbook, described in this liliputing post. It’s been reported to work perfectly fine with the latest version of Ubuntu (10.04, Lucid Lynx, due out later this April). Students can draw notes and pictures on the device (with a stylus), plus it has USB ports and a webcam, unlike the iPad.
So, what is the platform of choice for folks who want to create interactive graphical educational software (see for example all the stuff at PHET and NLVM). Currently, there are two primary options: Flash and Java Applets. I’m not covering in this post web applications, which can still use just about anything you want: PHP, Java, Ruby, Python, .NET, etc., or business/office/administrative software which can either be web apps or desktop apps coded in C++/Java/.NET/Python, etc., or 3D desktop games, usually coded in C++/Java/.NET/Python. I’m centered on interactive, graphical educational software like you see all over the web now.
The PHET project, for example, uses both java and flash. These haven’t always been the main options, however, and I suspect it will change again in the near future. Here’s a short history of some of the development tools I’ve leaned on for educational software development over the past 15 years:
- early 90s – hypercard / supercard, Perl/CGI for web apps
- early 00s – by this time, commercial options no longer cut it for me, too many bugs, ignored feature requests, too expensive, vendor lock-in – free and open source is king: python, java (later open sourced), C#/vb.net (esp. the Mono open source clone). Unfortunately there is no alternative to the commercial, proprietary flash, which becomes king of RIAs (rich internet applications) instead of java applets.
- early and late 10s? – This is the question of this post. Mobile platforms can no longer be ignored, and that means no java. Actually android is essentially java (dalvik), but standard java applets do not work. Flash is only just now being ported to work on android, and it may become available for the iphone as well, although Apple is hostile to it (as well as java). Since google doesn’t support browser applets (even android applets), and Apple wants total control of their platform, Flash is only increasing its dominance and importance.
Since Oracle bought out Sun, and there is no support nor any planned support for java on the android and iphone platforms, it appears the only open source alternative for the future of RIA apps may be HTML5. But that cannot be used for creating the kind of highly interactive graphical educational software that you can create in java and flash. For this to work in HTML5, it would require WebGL, a 3D (OpenGL ES) canvas for HTML5. WebGL still does not work out of the box on any mobile platform, but it has been or is being ported to work on WebKit (the browser engine for Palm’s WebOS and the iphone web browser) as well as android. Currently, to run WebGL you need to grab a nightly build of Firefox, WebKit, or Google Chrome (I’m trying out the last one). Official builds will have likely have built-in support for WebGL come November 2010 or so perhaps (Firefox 4). Here are some more resources on WebGL:
- Learning WebGL – blog
- Vladimir Vukićević, blog of the main developer for the canvas control, and porting it to android. He did similar work on the mono platform earlier.
- Planet WebGL – aggregator
- Blender to WebGL exporter
- Copperlicht – sample 3D engine for WebGL
- WebGL Wiki – User Contributions (other libraries)
I’ve been using Ubuntu Linux as my sole operating system for two years now, ever since before I became a professor. The switch was completely painless as I had already been using the same software on Windows and the Mac for years (such as OpenOffice, Firefox, VLC, Pidgin, Netbeans, Eclipse, JEdit, Inkscape, Gimp, etc.). I wrote about making the switch to Linux gradually over 6 years ago, and I dual-booted to Windows and Linux for a long time, but Windows was still my primary OS until 2 years ago.
There was some software I had to change when I made the switch, but I was planning to do so anyway. For data analysis instead of SPSS, I learned R, which is more powerful (see these notes for getting R and a GUI interface installed on Ubuntu). I had to find a different tool to make screencasts. Luckily they are all free in Linux. I used gtk-recordmydesktop, but there are also Istanbul, WebcamStudio, and others. For music instead of Winamp there was the winamp-clone xmms (and now Audacious). Of course there are itunes alternatives too. Wine can be used to run any Windows-specific software, including games. Second Life has a Linux version that works just fine, too, and Adobe AIR applications like Tweetdeck, Thwirl, and Seesmic Deskop work just fine. All web-based applications from Youtube to Google Apps to whatever work great in Firefox – you can install the latest Adobe Flash and Sun Java 6 plugins too.
The only reasons I’ve been still booting to Windows occasionally now are to make screencasts that show how to do things in Windows (which most students are using), and also to use the Wimba whiteboard/chat application that our university uses. Wimba is a Java applet-based application and should work on Linux fine, but it runs a “check my system” test first which complains and fails.
Also, our university stopped its proxy server that I was using to get off-campus access to journal articles in favor of a VPN instead that doesn’t work in Linux, but now I just use an ssh tunnel to campus instead which works just fine (see these instructions for ssh tunneling).
Below is just a basic list of what software tools are popular now for creating various types of applications. I only post it because it changes from year to year and not everyone keeps up with this kind of stuff. I was also interested to see how well the Java platform could serve as an all-purpose open source stack for developing all kinds of educational software. It’s not always the best or most popular solution for some types of applications, but it does have the widest presence overall. Of course Sun, which controls Java, is being bought out by Oracle, which may have an impact on some of the below options (like perhaps project wonderland or javafx). I have nothing against .NET either (and esp. its open source clone, Mono). In fact for a good while I was the 2nd most active contributor to the Boo programming language and compiler that ran on the .NET/Mono CLR platform. But the fact that it still can’t do browser applets is a big strike against it for my purposes of creating educational software. Silverlight (and open source clone Moonlight) are making progress but still not there. Flash/Flex and Java are still the two best options there (with HTML5/Canvas being another up and comer). Google’s Java-like platform (such as Android) is becoming more dominant as well. They just released O3D, a new 3D multi-user browser plugin, replacing their earlier discontinued Lively tool. However it only runs on Windows and Mac and is still in early development. If they released a browser plugin for running Android applications they’d almost have the total stack as well, but I have a feeling Sun/Oracle wouldn’t be happy about that.
I didn’t have time to hyperlink everything – you can google to see the various tools in more detail.
- Learning Management Systems
- Moodle (PHP)
- Sakai (Java)
- Web-based application frameworks
- Rails (ruby)
- Grails (groovy)
- Turbogears, etc. (Python)
- Cake, Symfony, etc. (PHP)
- JSP, Struts, Velocity, Tomcat, etc. (java)
- ASP.Net (.NET/Mono)
- Cloud computing services
- Google Appengine (Python, Java)
- Amazon EC2
- Sun cloud
- Content management systems
- Drupal (PHP)
- Joomla (PHP)
- Plone (Python)
- DotNetNuke (C#, .NET/Mono)
- Browser applets
- JavaFX, Java
- Silverlight (.NET) Moonlight (Mono)
- 3D multi-user virtual worlds
- Second Life / OpenSim (.NET/Mono)
- Project Wonderland (Java)
- Croquet (squeak/smalltalk)
- 3D games
- Java – JMonkeyEngine, JOGL, LWJGL, etc.
- .NET – XNA
- 2D games/simulations
- Netlogo, Starlogo, Repast (Java)
- Pulpcore (Java)
- Processing (Java)
- PyGame (Python)
- Cell phone applications
- Android (uses java-like language and runtime by google)
- iPhone (apple)
- JavaFX mobile
- Java ME
- Desktop applications
- .Net/Mono System.Windows.Forms
- Java Swing
- C/C++ – GTK, QT
- Python – PyGTK, wxPython, etc.