SlideShare a Scribd company logo
1 of 46
Frameworks Galore

A pragmatic review of available
        frameworks
     Now with 20% more framework-y goodness!
What are frameworks?
• Frameworks are tools or libraries that you can
  include in your application to take advantage
  of functionality that you would otherwise
  need to develop.
When should I use a framework?
• One of the main advantages of a framework is
  the reduction of developer workload.
• Another approach is to utilize frameworks for
  their subject expertise.
How would a framework help me?
• Drop-in functionality.
• Reduced maintenance.
• Faster startup and prototyping.
Downsides to using frameworks?
• Increased complexity.
• Enlarged security profile.
• Unused functionality.
What frameworks are out there?



  Finally, the good stuff!
Javascript Frameworks
• Historically focused on the client side, but
  with the advent of technologies such as
  Node.js and Vert.x this focus is lessening.
• Functionality ranges from DOM manipulation
  to visual effects.
• Purely client side MVC applications are
  possible with the functionality available from
  some frameworks.
jQuery, jQuery UI, jQuery Mobile
• jQuery features DOM element
  Selection, Events, AJAX interaction, Effects and
  extendable via Plugins.
• jQuery UI enhances jQuery with Themable
  appearance, Widgets, Interactions, Utilities
  and more Effects.
• jQuery Mobile focus jQuery and jQuery UI
  functionalities on mobile platforms (HTML5)
Modernizr.js
• Used to fill in functionality in browsers that
  lack HTML5 feature support (IE mostly)
• Checks for a variety of HTML5 and CSS3
  features and can load various modules in
  response to the presence of those capabilities.
• Very helpful for situations where support of
  older browsers is required but newer features
  are desired.
Backbone.js + Underscore.js
• Backbone adds
  modeling, collections, manipulations and
  event modeling to allow your application to
  interact with a backend via JSON.
• Underscore provides utility functions for use
  by Backbone, but can be used without
  Backbone.
Spine.js + Spine Mobile
• Adds Models, Views, Controllers, Routers, and
  Events to web applications.
• Spine Mobile aims to match Native
  applications for mobile users and extends the
  Spine functionality with a Touch interface and
  a web interface equivalent of Story Boards for
  Xcode.
Mustache.js + Handlebars.js
• Mustache (no designation) is a template
  languages for HTML generation.
• Mustache.js is the javascript processor for
  Mustache templates.
• Handlebars is a superset of mustache and
  adds some processing logic (iteration and
  conditional evaluation) to mustache
  templates.
CSS Frameworks
• Used to standardize CSS implementations
  across various browser platforms.
• Implement good practices for layout and
  typography.
• Allow easier layout by standardizing columns.
• More modern systems allow for designs that
  respond to the width of the viewport on the
  browser.
Twitter Bootstrap
• Actually includes JS functionality built on top
  of jQuery.
• Cohesive appearance of elements.
• Helps overcome lack of a UI/UX designer on
  the team by providing some basic elements
  and styles for your information, forms, and
  layout.
960 Grid System
• Designed to help layout pages of information.
• Designed around a 12, 16 or 24 column
  approach for a screen width of ~960px.
• Very light weight (~7KB)
• Only concerned with columns, widths and
  placement.
Blueprint CSS
• A column based system, but expanded to
  include typography and form
  elements/interfaces.
• Includes a plugin system.
• Additional support for printing forms
Less CSS
• Actually extends the original CSS with features
  such as
  variables, functions, operations, mixins, and
  conditional responses.
• Available as a javascript library to add
  interpretation to your webpages.
• Can also be used to preprocess your .less files
  into .css files for inclusion in your application.
• Responsive? Gotcha covered!
  width: 100%*(140/620);
SASS CSS
• Another preprocessor style framework for
  CSS.
• Adds functionality for
  variables, nesting, mixins, and selector
  inheritence.
• Used by Rails 3.1+
• Also supports math inline, so:
  font: #{$font-size}/#{$line-height};
Data Frameworks
• Serve to isolate your application logic from the
  persistence layer beneath.
• Allows your application to run against various
  database management systems without
  convoluted configurations.
• Provides a façade covering over the specific
  idiosyncrasies for the DBMS.
SQLAlchemy
• Two main components: Core and ORM
• Core: Generates DDL and abstracts the SQL
  commands.
• ORM: Allows more abstraction, allowing you to
  delegate persistence to the SQLAlchemy engine.
• Mature, High Performance framework
• Database Reflection/Type Introspection
• Allows hand-written SQL to be injected if needed.
DBIx::Class
• Speeds development, data abstraction and
  improves portability for your application.
• Allows you to represent your business rules
  through OO code and generate boilerplate
  code for CRUD operations.
• Available modules to inspect your
  database, and automatically create classes for
  all the tables in your schema.
Hibernate/nHibernate
• Originally a Java technology, but a .NET
  version is available too.
• Multiple configuration pathways, XML or
  JPA/Annotations
• Swappable connection pooling and caching
  techniques.
• Very flexible representations of relationships
  of objects to the database.
• HQL for Queries and Criteria elements.
ADO.NET Entity Framework
• Three operational modes: Code First, Model First and
  Database First.
• Code First is typically used when you’ve already developed
  code based objects and generally requires some minor
  adjustments to the base object to enable linkages to the
  child/parent objects themselves.
• Model First is typically used in new projects and excels at
  allowing a developer to rapidly work up the data model and
  interactions between the various modeled entities.
• Database First can be used to create strongly typed classes
  from an existing database. This can help with mapping new
  applications to old data sources or “web enabling” old
  applications.
MyBATIS
• Supports Java and .NET
• While Hibernate/nHibernate do many things
  for you automatically, MyBatis takes the other
  approach of asking you to dictate what code
  results in what DB interactions (mapping).
• Still uses a Unit of Work operational style
  (openSession() and closeSession() calls are
  expected).
Miso.Dataset
• A javascript library that allows dataset
  operations on the client side.
• Functions include
  filtering, grouping, aggregate calculations and
  other common manipulations that are
  typically performed at the DB layer.
• Can import data from json or other formats
  via AJAX calls.
Web Frameworks
• Generally provide some functionality to
  abstract away the details.
• Often used in conjunction with a Data
  Abstraction Framework and possibly a
  Javascript framework and/or CSS framework.
CodeIgniter
• A MVC based PHP system with a separation of
  your application code vs. system code.
• Well documented.
• Provides DB Access, Templates, Validation,
  Session Management, and more.
• Modular allowing additional libraries and
  helper functions.
• Integrates well with other static content
  frameworks (CSS and Javascript)
CakePHP
• Another PHP MVC system with excellent
  documentation.
• Many built in features for XSS, CSRF, and input
  validations.
• Components to help with
  email, cookie, security, session, and request
  handling.
• Requires minimal (if any) setup on the server.
Spring MVC
• Excellent (excessive?) separation of concerns.
• Available to a wide range of Java based
  application servers.
• Flexible configuration and management.
• Able to import or take advantage of an
  incredible number of Java based libraries.
Stripes
• Attempts to simplify creation of Java based
  MVC web applications.
• Auto-discovery of ActionBeans (convention
  over configuration)
• Flexible routing configuration (you want to
  masquerade as a collection of .html files, no
  problem)
• Requires Java 5 (because it uses Annotations
  and Generics)
JVM->Groovy->Grails
• Based on the Groovy scripting language (runs
  on the JVM Platform)
• Started as a port of Ruby on Rails, so it inherits
  many of the foundational concepts of Rails
• Includes a Groovy based ORM, which provides
  a façade over Hibernate.
• Simplifies development and has interop with
  Java based classes (JAR)
ASP.NET Web Forms
• Tons of Support, tutorials and other
  educational materials on the internet.
• Well constructed and fairly complete attempt
  to introduce a stateful mindset to web
  applications.
• Can get heavy handed with view state and
  sometimes page life cycle becomes a mystery.
• Many helper utilities and a very good IDE.
ASP.NET MVC
• Catching up to the MVC/lighter web
  applications process.
• Several versions released in rapid fire.
• Supports multiple templating/view engines.
• Benefits from much of the .NET ecosphere
  and can take advantage of my of the features
  from Web Forms (but not viewstate based
  controls)
Ruby on Rails
• Takes advantage of strong Ruby ecosphere.
• Opinionated software can help reduce the
  number of technology concerns for
  application development.
• Strongly supports testing.
• Many innovations that have been ruthlessly
  copied by others (such as Grails and many
  other web application frameworks).
Sinatra
• Very slim feature set, but very versatile.
• Well suited for exposing API end points
  without incurring overhead.
• Integrates with rack middleware (e.g. for
  sessions and auth functionality)
• Very flexible template resolution:
  require 'rdiscount'
  get('/') { markdown :index } #returns index.markdown
Catalyst
• Perl based MVC framework
• Swappable ORM layers (DBIx::Class, DBI, or
  many other persistence layers)
• Template processing via several optional
  engines
• Many included plugins for Form
  Validation, Request Handling, Session
  Management, and I18N.
Django
• Python based MVC Framework – Detail
  oriented yet quick to get results.
• Provides it’s own internal ORM along with
  several classes to help query and sift data.
• Calls views controllers and controllers
  views, or is it the other way around?
• “Pluggable” features form sub-functionality of
  a larger application or project.
Flask
• A “micro” framework that offers much basic
  functionality without dictating backend
  options.
• Managed Cookies, Flash
  Messages, Templates, File Uploads and many
  other handy items are implemented.
• Can be very handy for small API
  endpoints, but might not be a great fit for a
  larger application.
Testing Frameworks
• Serve to provide a suite of functions to
  enhance or establish tests for your code base.
• Several flavors from unit testing (testing
  specific small pieces of code) to integration
  testing (testing functionality of disparate
  systems) to usability testing.
• Often tied to the programming language used
  in a web application framework or other
  coding environment.
Unit Testing
•   NUnit (.NET)
•   Visual Studio Unit Testing Framework (.NET)
•   JUnit (JVM)
•   TestNG (JVM)
•   PHPUnit (PHP)
•   test::unit/minitest (Ruby)
•   unittest (Python)
Behavior Testing
• Rspec (Ruby)
• Jasmine.js (Javascript)
• PySpec (Python)
Browser/Automation Testing
• Selenium
• Mocha.js
Obligatory Incendiary Slide
Framework                                 Requests/Second

Flask 0.7.2                               1191

Sinatra 1.2.6                             982

Pyramid 1.2                               555

CodeIgniter 2.0.3                         542

Djanog 1.3.1                              465

Rails 3.1                                 463

CakePHP 1.3.11                            193



(Results from https://github.com/seedifferently/the-great-web-framework-shootout)
JVM + Ruby = JRuby
                       JRuby + JBoss AS = TorqueBox

             BONUS SLIDE
             Achievement: Perseverance Unlocked!


• Implement Ruby, Rails or Sinatra Applications
  on top of JBoss AS. Which brings to the table
  InfiniSpan, JDBC, JBoss Clustering and JBoss
  Scheduling features.
• Natively run WAR/EAR packaged systems side-
  by-side (from other jvm based systems).
The End




                                          or is it?


The comic faces and language logos used in this presentation are the property of their respective owners.
Questions?

Lee Fent
Email: lee.fent@okstate.edu
Twitter: @lee_fent

More Related Content

What's hot

Web sphere application server administration
Web sphere application server administrationWeb sphere application server administration
Web sphere application server administrationakirait4
 
Session 31 - Session Management, Best Practices, Design Patterns in Web Apps
Session 31 - Session Management, Best Practices, Design Patterns in Web AppsSession 31 - Session Management, Best Practices, Design Patterns in Web Apps
Session 31 - Session Management, Best Practices, Design Patterns in Web AppsPawanMM
 
itPage LDC 09 Presentation
itPage LDC 09 PresentationitPage LDC 09 Presentation
itPage LDC 09 PresentationEric Landmann
 
Java Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationJava Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationIMC Institute
 
Session 35 - Design Patterns
Session 35 - Design PatternsSession 35 - Design Patterns
Session 35 - Design PatternsPawanMM
 
Modern development paradigms
Modern development paradigmsModern development paradigms
Modern development paradigmsIvano Malavolta
 
Single Page Apps
Single Page AppsSingle Page Apps
Single Page AppsGil Fink
 
1. Spring intro IoC
1. Spring intro IoC1. Spring intro IoC
1. Spring intro IoCASG
 
Session 34 - JDBC Best Practices, Introduction to Design Patterns
Session 34 - JDBC Best Practices, Introduction to Design PatternsSession 34 - JDBC Best Practices, Introduction to Design Patterns
Session 34 - JDBC Best Practices, Introduction to Design PatternsPawanMM
 
MVC + ORM (with project implementation)
MVC + ORM (with project implementation)MVC + ORM (with project implementation)
MVC + ORM (with project implementation)Prateek Chauhan
 
Java web services soap rest training from hyderabad
Java web services soap rest training from hyderabadJava web services soap rest training from hyderabad
Java web services soap rest training from hyderabadFuturePoint Technologies
 
Session 32 - Session Management using Cookies
Session 32 - Session Management using CookiesSession 32 - Session Management using Cookies
Session 32 - Session Management using CookiesPawanMM
 
Local storage in Web apps
Local storage in Web appsLocal storage in Web apps
Local storage in Web appsIvano Malavolta
 
Session 39 - Hibernate - Part 1
Session 39 - Hibernate - Part 1Session 39 - Hibernate - Part 1
Session 39 - Hibernate - Part 1PawanMM
 
Session 36 - JSP - Part 1
Session 36 - JSP - Part 1Session 36 - JSP - Part 1
Session 36 - JSP - Part 1PawanMM
 
Action-Domain-Responder: A Refinement of MVC
Action-Domain-Responder: A Refinement of MVCAction-Domain-Responder: A Refinement of MVC
Action-Domain-Responder: A Refinement of MVCPaul Jones
 

What's hot (20)

Web sphere application server administration
Web sphere application server administrationWeb sphere application server administration
Web sphere application server administration
 
Advance java1.1
Advance java1.1Advance java1.1
Advance java1.1
 
Session 31 - Session Management, Best Practices, Design Patterns in Web Apps
Session 31 - Session Management, Best Practices, Design Patterns in Web AppsSession 31 - Session Management, Best Practices, Design Patterns in Web Apps
Session 31 - Session Management, Best Practices, Design Patterns in Web Apps
 
Weblogic application server
Weblogic application serverWeblogic application server
Weblogic application server
 
itPage LDC 09 Presentation
itPage LDC 09 PresentationitPage LDC 09 Presentation
itPage LDC 09 Presentation
 
Java Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web ApplicationJava Web Programming [1/9] : Introduction to Web Application
Java Web Programming [1/9] : Introduction to Web Application
 
Session 35 - Design Patterns
Session 35 - Design PatternsSession 35 - Design Patterns
Session 35 - Design Patterns
 
Hybernat and structs, spring classes in mumbai
Hybernat and structs, spring classes in mumbaiHybernat and structs, spring classes in mumbai
Hybernat and structs, spring classes in mumbai
 
Modern development paradigms
Modern development paradigmsModern development paradigms
Modern development paradigms
 
Single Page Apps
Single Page AppsSingle Page Apps
Single Page Apps
 
1. Spring intro IoC
1. Spring intro IoC1. Spring intro IoC
1. Spring intro IoC
 
Session 34 - JDBC Best Practices, Introduction to Design Patterns
Session 34 - JDBC Best Practices, Introduction to Design PatternsSession 34 - JDBC Best Practices, Introduction to Design Patterns
Session 34 - JDBC Best Practices, Introduction to Design Patterns
 
MVC + ORM (with project implementation)
MVC + ORM (with project implementation)MVC + ORM (with project implementation)
MVC + ORM (with project implementation)
 
Java web services soap rest training from hyderabad
Java web services soap rest training from hyderabadJava web services soap rest training from hyderabad
Java web services soap rest training from hyderabad
 
Session 32 - Session Management using Cookies
Session 32 - Session Management using CookiesSession 32 - Session Management using Cookies
Session 32 - Session Management using Cookies
 
Local storage in Web apps
Local storage in Web appsLocal storage in Web apps
Local storage in Web apps
 
Session 39 - Hibernate - Part 1
Session 39 - Hibernate - Part 1Session 39 - Hibernate - Part 1
Session 39 - Hibernate - Part 1
 
Session 36 - JSP - Part 1
Session 36 - JSP - Part 1Session 36 - JSP - Part 1
Session 36 - JSP - Part 1
 
Action-Domain-Responder: A Refinement of MVC
Action-Domain-Responder: A Refinement of MVCAction-Domain-Responder: A Refinement of MVC
Action-Domain-Responder: A Refinement of MVC
 
Building SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.jsBuilding SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.js
 

Similar to Frameworks Galore: A Pragmatic Review

pranayJ
pranayJpranayJ
pranayJPray B
 
Lecture #5 Introduction to rails
Lecture #5 Introduction to railsLecture #5 Introduction to rails
Lecture #5 Introduction to railsEvgeniy Hinyuk
 
Introduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukIntroduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukPivorak MeetUp
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC vipin kumar
 
Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Adam Mokan
 
Top 10 frameworks of node js
Top 10 frameworks of node jsTop 10 frameworks of node js
Top 10 frameworks of node jsHabilelabs
 
Presentation 1 Web--dev
Presentation 1 Web--devPresentation 1 Web--dev
Presentation 1 Web--devaltsav
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stackJohan Edstrom
 
Azure - Data Platform
Azure - Data PlatformAzure - Data Platform
Azure - Data Platformgiventocode
 
Node.js Frameworks to watch for in 2019
Node.js Frameworks to watch for in 2019Node.js Frameworks to watch for in 2019
Node.js Frameworks to watch for in 2019BrainMobi
 
Intro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NETIntro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NETAlan Hecht
 
Ppt for Online music store
Ppt for Online music storePpt for Online music store
Ppt for Online music storeADEEBANADEEM
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?Balajihope
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5Malam Team
 

Similar to Frameworks Galore: A Pragmatic Review (20)

pranayJ
pranayJpranayJ
pranayJ
 
Lecture #5 Introduction to rails
Lecture #5 Introduction to railsLecture #5 Introduction to rails
Lecture #5 Introduction to rails
 
Introduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy HinyukIntroduction to Rails by Evgeniy Hinyuk
Introduction to Rails by Evgeniy Hinyuk
 
Ra framework 0.1
Ra framework 0.1Ra framework 0.1
Ra framework 0.1
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC
 
Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012
 
Top 10 frameworks of node js
Top 10 frameworks of node jsTop 10 frameworks of node js
Top 10 frameworks of node js
 
Presentation 1 Web--dev
Presentation 1 Web--devPresentation 1 Web--dev
Presentation 1 Web--dev
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
Azure - Data Platform
Azure - Data PlatformAzure - Data Platform
Azure - Data Platform
 
Node.js Frameworks to watch for in 2019
Node.js Frameworks to watch for in 2019Node.js Frameworks to watch for in 2019
Node.js Frameworks to watch for in 2019
 
Microservices in Azure
Microservices in AzureMicroservices in Azure
Microservices in Azure
 
Intro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NETIntro to SPA using JavaScript & ASP.NET
Intro to SPA using JavaScript & ASP.NET
 
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
Oracle OpenWorld 2014 Review Part Four - PaaS MiddlewareOracle OpenWorld 2014 Review Part Four - PaaS Middleware
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
 
Santosh_Resume_Java
Santosh_Resume_JavaSantosh_Resume_Java
Santosh_Resume_Java
 
Ppt for Online music store
Ppt for Online music storePpt for Online music store
Ppt for Online music store
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5
 
Basics of Backbone.js
Basics of Backbone.jsBasics of Backbone.js
Basics of Backbone.js
 

More from netc2012

Using Wordpress as Social Media to Educate and Interact with Clientele
Using Wordpress as  Social Media to Educate and Interact with ClienteleUsing Wordpress as  Social Media to Educate and Interact with Clientele
Using Wordpress as Social Media to Educate and Interact with Clientelenetc2012
 
Website evaluation
Website evaluationWebsite evaluation
Website evaluationnetc2012
 
Virtual vs. In-Person Professional Development
Virtual vs. In-Person Professional DevelopmentVirtual vs. In-Person Professional Development
Virtual vs. In-Person Professional Developmentnetc2012
 
How to like your facebook presence
How to like your facebook presenceHow to like your facebook presence
How to like your facebook presencenetc2012
 
Extension educator certificate
Extension educator certificateExtension educator certificate
Extension educator certificatenetc2012
 
The iPad Lab
The iPad LabThe iPad Lab
The iPad Labnetc2012
 
Virtual work space
Virtual work spaceVirtual work space
Virtual work spacenetc2012
 
Beyond logic models
Beyond logic modelsBeyond logic models
Beyond logic modelsnetc2012
 
Evaluating social media
Evaluating social mediaEvaluating social media
Evaluating social medianetc2012
 
MS Dynamics CRM - One Stop Extension Reporting
MS Dynamics CRM - One Stop Extension ReportingMS Dynamics CRM - One Stop Extension Reporting
MS Dynamics CRM - One Stop Extension Reportingnetc2012
 
Moodle @ eXtension.org
Moodle @ eXtension.orgMoodle @ eXtension.org
Moodle @ eXtension.orgnetc2012
 
Drupal CMS: eXtension’s collaborative workspace
Drupal CMS: eXtension’s collaborative workspaceDrupal CMS: eXtension’s collaborative workspace
Drupal CMS: eXtension’s collaborative workspacenetc2012
 
Video Streaming: Broadcast quality on a shoe string budget.
Video Streaming: Broadcast quality on a shoe string budget.  Video Streaming: Broadcast quality on a shoe string budget.
Video Streaming: Broadcast quality on a shoe string budget. netc2012
 
Getting found - Search Engine Optimizaton
Getting found - Search Engine OptimizatonGetting found - Search Engine Optimizaton
Getting found - Search Engine Optimizatonnetc2012
 
Drinking with the horses
Drinking with the horsesDrinking with the horses
Drinking with the horsesnetc2012
 
Developing iPad apps for extension education
Developing iPad apps for extension educationDeveloping iPad apps for extension education
Developing iPad apps for extension educationnetc2012
 
Integrating Technology in a Childhood Obesity Prevention Program: A Practical...
Integrating Technology in a Childhood Obesity Prevention Program: A Practical...Integrating Technology in a Childhood Obesity Prevention Program: A Practical...
Integrating Technology in a Childhood Obesity Prevention Program: A Practical...netc2012
 
10 Steps to Lead Extension into the 21st Century
10 Steps to Lead Extension into the 21st Century10 Steps to Lead Extension into the 21st Century
10 Steps to Lead Extension into the 21st Centurynetc2012
 

More from netc2012 (18)

Using Wordpress as Social Media to Educate and Interact with Clientele
Using Wordpress as  Social Media to Educate and Interact with ClienteleUsing Wordpress as  Social Media to Educate and Interact with Clientele
Using Wordpress as Social Media to Educate and Interact with Clientele
 
Website evaluation
Website evaluationWebsite evaluation
Website evaluation
 
Virtual vs. In-Person Professional Development
Virtual vs. In-Person Professional DevelopmentVirtual vs. In-Person Professional Development
Virtual vs. In-Person Professional Development
 
How to like your facebook presence
How to like your facebook presenceHow to like your facebook presence
How to like your facebook presence
 
Extension educator certificate
Extension educator certificateExtension educator certificate
Extension educator certificate
 
The iPad Lab
The iPad LabThe iPad Lab
The iPad Lab
 
Virtual work space
Virtual work spaceVirtual work space
Virtual work space
 
Beyond logic models
Beyond logic modelsBeyond logic models
Beyond logic models
 
Evaluating social media
Evaluating social mediaEvaluating social media
Evaluating social media
 
MS Dynamics CRM - One Stop Extension Reporting
MS Dynamics CRM - One Stop Extension ReportingMS Dynamics CRM - One Stop Extension Reporting
MS Dynamics CRM - One Stop Extension Reporting
 
Moodle @ eXtension.org
Moodle @ eXtension.orgMoodle @ eXtension.org
Moodle @ eXtension.org
 
Drupal CMS: eXtension’s collaborative workspace
Drupal CMS: eXtension’s collaborative workspaceDrupal CMS: eXtension’s collaborative workspace
Drupal CMS: eXtension’s collaborative workspace
 
Video Streaming: Broadcast quality on a shoe string budget.
Video Streaming: Broadcast quality on a shoe string budget.  Video Streaming: Broadcast quality on a shoe string budget.
Video Streaming: Broadcast quality on a shoe string budget.
 
Getting found - Search Engine Optimizaton
Getting found - Search Engine OptimizatonGetting found - Search Engine Optimizaton
Getting found - Search Engine Optimizaton
 
Drinking with the horses
Drinking with the horsesDrinking with the horses
Drinking with the horses
 
Developing iPad apps for extension education
Developing iPad apps for extension educationDeveloping iPad apps for extension education
Developing iPad apps for extension education
 
Integrating Technology in a Childhood Obesity Prevention Program: A Practical...
Integrating Technology in a Childhood Obesity Prevention Program: A Practical...Integrating Technology in a Childhood Obesity Prevention Program: A Practical...
Integrating Technology in a Childhood Obesity Prevention Program: A Practical...
 
10 Steps to Lead Extension into the 21st Century
10 Steps to Lead Extension into the 21st Century10 Steps to Lead Extension into the 21st Century
10 Steps to Lead Extension into the 21st Century
 

Recently uploaded

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 

Recently uploaded (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 

Frameworks Galore: A Pragmatic Review

  • 1. Frameworks Galore A pragmatic review of available frameworks Now with 20% more framework-y goodness!
  • 2. What are frameworks? • Frameworks are tools or libraries that you can include in your application to take advantage of functionality that you would otherwise need to develop.
  • 3. When should I use a framework? • One of the main advantages of a framework is the reduction of developer workload. • Another approach is to utilize frameworks for their subject expertise.
  • 4. How would a framework help me? • Drop-in functionality. • Reduced maintenance. • Faster startup and prototyping.
  • 5. Downsides to using frameworks? • Increased complexity. • Enlarged security profile. • Unused functionality.
  • 6. What frameworks are out there? Finally, the good stuff!
  • 7. Javascript Frameworks • Historically focused on the client side, but with the advent of technologies such as Node.js and Vert.x this focus is lessening. • Functionality ranges from DOM manipulation to visual effects. • Purely client side MVC applications are possible with the functionality available from some frameworks.
  • 8. jQuery, jQuery UI, jQuery Mobile • jQuery features DOM element Selection, Events, AJAX interaction, Effects and extendable via Plugins. • jQuery UI enhances jQuery with Themable appearance, Widgets, Interactions, Utilities and more Effects. • jQuery Mobile focus jQuery and jQuery UI functionalities on mobile platforms (HTML5)
  • 9. Modernizr.js • Used to fill in functionality in browsers that lack HTML5 feature support (IE mostly) • Checks for a variety of HTML5 and CSS3 features and can load various modules in response to the presence of those capabilities. • Very helpful for situations where support of older browsers is required but newer features are desired.
  • 10. Backbone.js + Underscore.js • Backbone adds modeling, collections, manipulations and event modeling to allow your application to interact with a backend via JSON. • Underscore provides utility functions for use by Backbone, but can be used without Backbone.
  • 11. Spine.js + Spine Mobile • Adds Models, Views, Controllers, Routers, and Events to web applications. • Spine Mobile aims to match Native applications for mobile users and extends the Spine functionality with a Touch interface and a web interface equivalent of Story Boards for Xcode.
  • 12. Mustache.js + Handlebars.js • Mustache (no designation) is a template languages for HTML generation. • Mustache.js is the javascript processor for Mustache templates. • Handlebars is a superset of mustache and adds some processing logic (iteration and conditional evaluation) to mustache templates.
  • 13. CSS Frameworks • Used to standardize CSS implementations across various browser platforms. • Implement good practices for layout and typography. • Allow easier layout by standardizing columns. • More modern systems allow for designs that respond to the width of the viewport on the browser.
  • 14. Twitter Bootstrap • Actually includes JS functionality built on top of jQuery. • Cohesive appearance of elements. • Helps overcome lack of a UI/UX designer on the team by providing some basic elements and styles for your information, forms, and layout.
  • 15. 960 Grid System • Designed to help layout pages of information. • Designed around a 12, 16 or 24 column approach for a screen width of ~960px. • Very light weight (~7KB) • Only concerned with columns, widths and placement.
  • 16. Blueprint CSS • A column based system, but expanded to include typography and form elements/interfaces. • Includes a plugin system. • Additional support for printing forms
  • 17. Less CSS • Actually extends the original CSS with features such as variables, functions, operations, mixins, and conditional responses. • Available as a javascript library to add interpretation to your webpages. • Can also be used to preprocess your .less files into .css files for inclusion in your application. • Responsive? Gotcha covered! width: 100%*(140/620);
  • 18. SASS CSS • Another preprocessor style framework for CSS. • Adds functionality for variables, nesting, mixins, and selector inheritence. • Used by Rails 3.1+ • Also supports math inline, so: font: #{$font-size}/#{$line-height};
  • 19. Data Frameworks • Serve to isolate your application logic from the persistence layer beneath. • Allows your application to run against various database management systems without convoluted configurations. • Provides a façade covering over the specific idiosyncrasies for the DBMS.
  • 20. SQLAlchemy • Two main components: Core and ORM • Core: Generates DDL and abstracts the SQL commands. • ORM: Allows more abstraction, allowing you to delegate persistence to the SQLAlchemy engine. • Mature, High Performance framework • Database Reflection/Type Introspection • Allows hand-written SQL to be injected if needed.
  • 21. DBIx::Class • Speeds development, data abstraction and improves portability for your application. • Allows you to represent your business rules through OO code and generate boilerplate code for CRUD operations. • Available modules to inspect your database, and automatically create classes for all the tables in your schema.
  • 22. Hibernate/nHibernate • Originally a Java technology, but a .NET version is available too. • Multiple configuration pathways, XML or JPA/Annotations • Swappable connection pooling and caching techniques. • Very flexible representations of relationships of objects to the database. • HQL for Queries and Criteria elements.
  • 23. ADO.NET Entity Framework • Three operational modes: Code First, Model First and Database First. • Code First is typically used when you’ve already developed code based objects and generally requires some minor adjustments to the base object to enable linkages to the child/parent objects themselves. • Model First is typically used in new projects and excels at allowing a developer to rapidly work up the data model and interactions between the various modeled entities. • Database First can be used to create strongly typed classes from an existing database. This can help with mapping new applications to old data sources or “web enabling” old applications.
  • 24. MyBATIS • Supports Java and .NET • While Hibernate/nHibernate do many things for you automatically, MyBatis takes the other approach of asking you to dictate what code results in what DB interactions (mapping). • Still uses a Unit of Work operational style (openSession() and closeSession() calls are expected).
  • 25. Miso.Dataset • A javascript library that allows dataset operations on the client side. • Functions include filtering, grouping, aggregate calculations and other common manipulations that are typically performed at the DB layer. • Can import data from json or other formats via AJAX calls.
  • 26. Web Frameworks • Generally provide some functionality to abstract away the details. • Often used in conjunction with a Data Abstraction Framework and possibly a Javascript framework and/or CSS framework.
  • 27. CodeIgniter • A MVC based PHP system with a separation of your application code vs. system code. • Well documented. • Provides DB Access, Templates, Validation, Session Management, and more. • Modular allowing additional libraries and helper functions. • Integrates well with other static content frameworks (CSS and Javascript)
  • 28. CakePHP • Another PHP MVC system with excellent documentation. • Many built in features for XSS, CSRF, and input validations. • Components to help with email, cookie, security, session, and request handling. • Requires minimal (if any) setup on the server.
  • 29. Spring MVC • Excellent (excessive?) separation of concerns. • Available to a wide range of Java based application servers. • Flexible configuration and management. • Able to import or take advantage of an incredible number of Java based libraries.
  • 30. Stripes • Attempts to simplify creation of Java based MVC web applications. • Auto-discovery of ActionBeans (convention over configuration) • Flexible routing configuration (you want to masquerade as a collection of .html files, no problem) • Requires Java 5 (because it uses Annotations and Generics)
  • 31. JVM->Groovy->Grails • Based on the Groovy scripting language (runs on the JVM Platform) • Started as a port of Ruby on Rails, so it inherits many of the foundational concepts of Rails • Includes a Groovy based ORM, which provides a façade over Hibernate. • Simplifies development and has interop with Java based classes (JAR)
  • 32. ASP.NET Web Forms • Tons of Support, tutorials and other educational materials on the internet. • Well constructed and fairly complete attempt to introduce a stateful mindset to web applications. • Can get heavy handed with view state and sometimes page life cycle becomes a mystery. • Many helper utilities and a very good IDE.
  • 33. ASP.NET MVC • Catching up to the MVC/lighter web applications process. • Several versions released in rapid fire. • Supports multiple templating/view engines. • Benefits from much of the .NET ecosphere and can take advantage of my of the features from Web Forms (but not viewstate based controls)
  • 34. Ruby on Rails • Takes advantage of strong Ruby ecosphere. • Opinionated software can help reduce the number of technology concerns for application development. • Strongly supports testing. • Many innovations that have been ruthlessly copied by others (such as Grails and many other web application frameworks).
  • 35. Sinatra • Very slim feature set, but very versatile. • Well suited for exposing API end points without incurring overhead. • Integrates with rack middleware (e.g. for sessions and auth functionality) • Very flexible template resolution: require 'rdiscount' get('/') { markdown :index } #returns index.markdown
  • 36. Catalyst • Perl based MVC framework • Swappable ORM layers (DBIx::Class, DBI, or many other persistence layers) • Template processing via several optional engines • Many included plugins for Form Validation, Request Handling, Session Management, and I18N.
  • 37. Django • Python based MVC Framework – Detail oriented yet quick to get results. • Provides it’s own internal ORM along with several classes to help query and sift data. • Calls views controllers and controllers views, or is it the other way around? • “Pluggable” features form sub-functionality of a larger application or project.
  • 38. Flask • A “micro” framework that offers much basic functionality without dictating backend options. • Managed Cookies, Flash Messages, Templates, File Uploads and many other handy items are implemented. • Can be very handy for small API endpoints, but might not be a great fit for a larger application.
  • 39. Testing Frameworks • Serve to provide a suite of functions to enhance or establish tests for your code base. • Several flavors from unit testing (testing specific small pieces of code) to integration testing (testing functionality of disparate systems) to usability testing. • Often tied to the programming language used in a web application framework or other coding environment.
  • 40. Unit Testing • NUnit (.NET) • Visual Studio Unit Testing Framework (.NET) • JUnit (JVM) • TestNG (JVM) • PHPUnit (PHP) • test::unit/minitest (Ruby) • unittest (Python)
  • 41. Behavior Testing • Rspec (Ruby) • Jasmine.js (Javascript) • PySpec (Python)
  • 43. Obligatory Incendiary Slide Framework Requests/Second Flask 0.7.2 1191 Sinatra 1.2.6 982 Pyramid 1.2 555 CodeIgniter 2.0.3 542 Djanog 1.3.1 465 Rails 3.1 463 CakePHP 1.3.11 193 (Results from https://github.com/seedifferently/the-great-web-framework-shootout)
  • 44. JVM + Ruby = JRuby JRuby + JBoss AS = TorqueBox BONUS SLIDE Achievement: Perseverance Unlocked! • Implement Ruby, Rails or Sinatra Applications on top of JBoss AS. Which brings to the table InfiniSpan, JDBC, JBoss Clustering and JBoss Scheduling features. • Natively run WAR/EAR packaged systems side- by-side (from other jvm based systems).
  • 45. The End or is it? The comic faces and language logos used in this presentation are the property of their respective owners.