Frameworks Presentations

Web development frameworks take the concepts we've been working with and provide a higher level of abstraction to work at; reducing the amount of ad hoc and boilerplate code. This reduces effort, but more importantly reduces the opportunities to introduce bugs. Frameworks provide more or less guidance (refered to as opinionated) to the developer, to promote best practices and already tested code.

In this assignment, your team of 3 will explore a web development framework and present it to the class. What we want to hear about is:

  • The pros and cons of the framework, according to its authors
  • The pros and cons of the framework, according to the community
  • How it handles routing, db access, html generation, javascript integration (front-end), users/session/security
  • Tools (e.g. testing, profiling, deployment - whatever it boasts)
  • Give specific examples!

Details, Details

Logistics

  • You must work with a team of 3 unless you are actually the last 2 people in the class. You may choose your own teammates.
  • You will do a 15 minute presentation during the final class period (5/2). Everyone on the team must take 5 minutes.

Content

Every framework is different, but they either use an MVC model or notably do not, so talk about it in those terms. Some lightwight frameworks (Slim, Flask) don't include all things "in the box". In that case, you have to find the communities' generally accepted add-ons (e.g. SQLAlchemy for ORM in the case of Flask).

The Frameworks

You can choose other ones, just run it by me. These are just major ones I'm aware of. You do have to do something 3-tier, not direct connect from client JS to the DB (e.g. couchdb).

PHP

  • Laravel
  • Symfony
  • Phalcon
  • Slim

JavaScript (mix-and-match client and server)

  • AngularJS (client-side)
  • Ember.js (client-side)
  • Ionic (client-side)
  • Express (server-side)
  • Geddy (server-side)
  • Locomotive (server-side)
  • Meteor.js (full)
  • Tower.js (full)
  • DerbyJS (full)

C#

  • ASP.net (Microsoft)

Java

  • Spring MVC
  • Java Server Faces
  • Grails (groovy, a dynamic JVM language)
  • Apache Struts

Ruby

  • Ruby on Rails

Python

  • Django
  • Pylons/Pyramid
  • Flask