~~SLIDESHOW~~ ====== On the Radar ====== **Contact Hour 28?**: To be discussed on Friday 27th April, 2013. **Lecturer**: [[C.P.Jobling@Swansea.ac.uk|Dr Chris P. Jobling]]. **Abstract** Interesting developments in Web Applications Technology or //What Might Be Good to Have on Your CV// in a year or two's time. Use your favourite search engine to find out more. ===== On the Radar ===== * Client Side * Structural Layer * Presentation Layer * Behavioural Layer * Server-Side * Database layer * Development Best-Practices * How do I know? ===== Client-Side: Structural Layer ===== * HTML5 of course! * HAML ===== Client-Side: Presentational Layer ===== * CSS3 * HTML5 boilerplate -- some HTML5 but a lot of CSS best practices too * Grid-based fluid layout frameworks * Responsive Web Design * Mobile-first design * Media queries * SASS and LESS ===== Client-Side: Behavioural Layer ===== * New HTML5 JavaScript APIs and browser capabilities * Modernizr and polyfills * jQuery library * Backbone.js ===== Client-Side: New Languages ===== These two compile to JavaScript: * Coffeescript -> built-in to Rails * Dart -> being developed by Google by and for their own web app developers ===== Client-Side: MVC Frameworks ===== //Hundreds// of them! Aside from Backbone.js, the ones I think are worth deeper study are: * Angular.js * Ember.js * Spine.js * Knockout.js * Meteor.js Keep an eye on TodoMVC for more and examples of their use. ===== Server-Side ===== * Other Programming Languages * Important frameworks that you'll meet next year * Other Mainstream Web Development Frameworks * Interesting niche frameworks * Apps vs Web Apps ===== Server Side: Other Programming Languages ===== * PHP * Java * Python * C# * Perl * //JavaScript//! ===== Server Side: Important frameworks that you'll meet next year ===== Very popular in so-called //enterprise// applications and intranet developments: * Java: Servlets, JSP, JSF, Java Web Services, Spring, ... //Internet Computing// * Microsoft .NET: C#, ASP.NET, ... //Building Reliable Web Applications// ===== Server Side: Other Mainstream Web Development Frameworks ===== * Ruby on Rails -- Ruby * Django -- Python * Cake, Laravel -- PHP * Node.js -- JavaScript * Spring -- Java * ... ===== Server Side: Interesting niche frameworks ===== * Dart -> compiles to "//JavaScript for the modern browser//", but it's server-side too! * Google Web Toolkit (GWT) -> Java to HTML/JavaScript * Google App Engine -> Python and Java * Sinatra -> Ruby * Express.js -> JavaScript + Node.js + //the Client-side MVC framework of your choice// * Meteor -> JavaScript + Node.js ===== Mobile and Other Form Factors ===== * Smart phones * Tablets * Surfaces * TVs * Gaming consoles ===== Apps vs Web Apps ===== * Web Apps: HTML5, CSS3, JavaScript, Location Services, Local Storage, Canvas, ... all devices! * iOS: Mac only development tools XCode, Objective-C and Cocoa target iPhone, iPod Touch, iPad, distribution by App Store only. * Android: Java so cross platform development. Main problem -> fragmentation of platform. ===== Database layer ===== Complex data models with lots of relationships require complex and time/space consuming join queries. Rise of the so-called No SQL alternatives: * redis * MongoDB * CouchDB ===== Development Best-Practices ===== Many of the most widely used tools and techniques have come from the Open Source Community and Agile Development. * Version control - almost standardized on Git but some major projects use CVS, SVN, Mercury, Bazaar * Development communities - GitHub, SourceForge, Google Code * Behavioural and Test Driven Development - Unit testing, executable specifications (e.g. RSpec), acceptance testing (e.g. Cucumber), continuous integration ===== How do I know? ===== * I follow the RSS feeds lots of development sites * I read influential on-line journals * I Watch selected videos on YouTube and other video sharing sites * I listen to technical development podcasts * I have Google+, Twitter and LinkedIn accounts * I occasionally blog * I am signed up to Code Year, Code School and Nettuts+ * I set myself development projects in a technology I need to learn * I teach so I have to continuously learn! You should do some or all of these too! ===== Good Sources ===== * The ChangeLog blog and podcasts -- "open source moves fast, keep up!" * RailsCasts and similar * A List Apart * HTML5 Doctor and HTML5 Rocks * Google TechTalks and Google I/O conference sessions on YouTube * YUI Theatre * BBC Click (TV iPlayer and radio Podcast) * The Guardian Tech weekly podcast ===== Summary of this Session ===== * Client Side * Structural Layer * Presentation Layer * Behavioural Layer * Server-Side * Database layer * Development Best-Practices * How do I know? ===== The End ===== Thanks for Watching! [[eg-259:lecture20|Previous Lecture]] | [[eg-259:home]]