Powered by Java!..script.
The meat of Dan’s talk focused on one of the biggest engineering challenges we face in building web applications: dealing with legacy and monolithic services that are most often written in Java or PHP.
What Dan proposes is to build a Node “front-end back-end” as a middle tier between the legacy monolith to deliver front-end assets. Like most micro-services, this middle tier allows us separate concerns between the front-end and back-end data. Given that back-end data stores only evolve when the business domain changes, an event that rarely occurs, we have the ability to change the way front-end assets evolve quickly and often.
By having Node in more layers of the stack, full-stack developers get a break from frequent context-switching and front-end engineers have the opportunity to contribute to more of the code base.
For example: my neighbor, Tomomi Imura (@girlie_mac), demo-ed two applications that she created for fun to demonstrate the ability to hook into device APIs to use what’s available in the browser. The first one was Sushi Compass and the second was CoreMob. The major APIs leveraged among both were the phone’s camera and GPS, LocalStorage/IndexDB, and File APIs to read and write. Another exciting example was Jamison Dance’s (@jergason) use of the Audio APIs to drop some beats and make DOMstep.
Caching files locally also brought upon the notion of creating web applications without the need for a server. DreamWriter.io, for example, manages all user interaction with the client (browser) before ever having to communicate with a server — and in Richard Feldman’s (@rtfeldman) case, the only server he needed to communicate with was Dropbox, a third-party service. The biggest benefit of these near-native apps is the fact that there’s no need to go through an installation process on both mobile and desktop. On desktop, however, Richard Feldman noted that the fluidity of context switching to a web app introduces a few extra steps, this being tabbing to a browser window and THEN a tab versus a native container.