Web Development Environments: Choose the best or go with the rest

50 %
50 %
Information about Web Development Environments: Choose the best or go with the rest

Published on July 14, 2008

Author: george.james

Source: slideshare.net

Web Development Environments: Choose the best or go with the rest Chris Munt M/Gateway Developments Ltd

Agenda Technologies CSP, WebLink Dedicated: JSP, ASP.NET, PHP etc … Pre-existing: Perl, Python, Ruby etc … Choosing the “right” one

Technologies

CSP, WebLink

Dedicated: JSP, ASP.NET, PHP etc …

Pre-existing: Perl, Python, Ruby etc …

Choosing the “right” one

Choosing the right one Effect of powerful corporate interests Effect of powerful community interests Effect of peer pressure Effect of Open Source movement

Effect of powerful corporate interests

Effect of powerful community interests

Effect of peer pressure

Effect of Open Source movement

Choosing the right one “ No one ever got fired for choosing __”

“ No one ever got fired for choosing __”

Windows? You can evaluate and choose from… PHP Zend, CakePHP, PHOCOA, Friendly, Symfony, etc… JSP/Java Barracuda, Struts, Spring, etc … Python Django, Pylons, TurboGears, Zope, Pyroxide, etc … Ruby Ruby on Rails, Ramaze, Camping, etc … Perl LAMP, Mason, Calatyst, etc … CSP, WebLink Zen, EWD, WLD

You can evaluate and choose from…

PHP

Zend, CakePHP, PHOCOA, Friendly, Symfony, etc…

JSP/Java

Barracuda, Struts, Spring, etc …

Python

Django, Pylons, TurboGears, Zope, Pyroxide, etc …

Ruby

Ruby on Rails, Ramaze, Camping, etc …

Perl

LAMP, Mason, Calatyst, etc …

CSP, WebLink

Zen, EWD, WLD

Windows? … or go with the crowd … ASP.NET

… or go with the crowd …

ASP.NET

Not Windows? You can evaluate and choose from… PHP Zend, CakePHP, PHOCOA, Friendly, Symfony, etc… Python Django, Pylons, TurboGears, Zope, Pyroxide, etc … Ruby Ruby on Rails, Ramaze, Camping, etc … Perl LAMP, Mason, Calatyst, etc … CSP, WebLink Zen, EWD, WLD

You can evaluate and choose from…

PHP

Zend, CakePHP, PHOCOA, Friendly, Symfony, etc…

Python

Django, Pylons, TurboGears, Zope, Pyroxide, etc …

Ruby

Ruby on Rails, Ramaze, Camping, etc …

Perl

LAMP, Mason, Calatyst, etc …

CSP, WebLink

Zen, EWD, WLD

Not Windows? … or go with the crowd … JSP/Java

… or go with the crowd …

JSP/Java

Choosing a database 1980s/90s … Evaluate demonstrably better performing options … Cache … or go with the crowd … Oracle DB2 Informix Sybase (SQL Server – partially derived from Sybase)

… Evaluate demonstrably better performing options …

Cache

… or go with the crowd …

Oracle

DB2

Informix

Sybase

(SQL Server – partially derived from Sybase)

Choosing a database 2000s Looking at alternatives to the big players no longer seems daft. Cache Derivatives from the M and PICK world XML Databases, OO Databases MySQL Btree based databases from the embedded systems world Previous main players? Oracle (Oracle Database 10g Express – free). (purchased Berkeley DB from Sleepycat 2006 - free). DB2 (provide DB2 Express-C - free). SQL Server (provide SQL Server Express – free). Sybase (A long way behind the top three). Informix (Acquired by IBM 2001).

Looking at alternatives to the big players no longer seems daft.

Cache

Derivatives from the M and PICK world

XML Databases, OO Databases

MySQL

Btree based databases from the embedded systems world

Previous main players?

Oracle (Oracle Database 10g Express – free).

(purchased Berkeley DB from Sleepycat 2006 - free).

DB2 (provide DB2 Express-C - free).

SQL Server (provide SQL Server Express – free).

Sybase (A long way behind the top three).

Informix (Acquired by IBM 2001).

Databases: What happened? Over-powerful vendors Challenged by Open Source movement MySQL “ Good enough” databases Challenged by diverse requirements XML Diverse data types Web services Embedded systems

Over-powerful vendors

Challenged by Open Source movement

MySQL

“ Good enough” databases

Challenged by diverse requirements

XML

Diverse data types

Web services

Embedded systems

Web Development: What’s happening? Two monsters: ASP.NET Java/JSP Vendor interests assisted by over-powerful development communities Challenged by powerful user communities and companies acting on their behalf Google App engine: Python takes its place on the Cool Wall Ongoing challenge from Open Source movement

Two monsters:

ASP.NET

Java/JSP

Vendor interests assisted by over-powerful development communities

Challenged by powerful user communities and companies acting on their behalf

Google App engine: Python takes its place on the Cool Wall

Ongoing challenge from Open Source movement

Web Development: How to choose an environment Note the impact that companies like Google can have. Don’t be afraid to evaluate lesser known technologies provided … well let’s look at what’s available first …

Note the impact that companies like Google can have.

Don’t be afraid to evaluate lesser known technologies provided … well let’s look at what’s available first …

ASP & ASP.NET Microsoft IIS Classic ASP (~1996) script based and interpretive ASP.NET (~2002) Compiled, dependent on .Net framework Database access ADO.Net (base class library) ODBC data provider Web Services

Microsoft IIS

Classic ASP (~1996)

script based and interpretive

ASP.NET (~2002)

Compiled, dependent on .Net framework

Database access

ADO.Net (base class library)

ODBC data provider

Web Services

.NET Architecture – key components Huge class library. Common Language Infrastructure (CLI) Common Language Runtime (CLR) Microsoft’s Virtual Machine Contributing languages expected to work with this layer Memory management/Garbage collection System resource management E.g. threads and exceptions Security

Huge class library.

Common Language Infrastructure (CLI)

Common Language Runtime (CLR)

Microsoft’s Virtual Machine

Contributing languages expected to work with this layer

Memory management/Garbage collection

System resource management

E.g. threads and exceptions

Security

ASP.NET: Key Languages VB.NET Classic VB development C# Similar to Java Higher level types than C/C++; array bounds checking etc … Approved as standard ECMA (ECMA-334) and ISO (ISO/IEC 23270) J# Legacy environment for J++ Usage declining Will retire with Visual Studio 2005 in 2015

VB.NET

Classic VB development

C#

Similar to Java

Higher level types than C/C++; array bounds checking etc …

Approved as standard ECMA (ECMA-334) and ISO (ISO/IEC 23270)

J#

Legacy environment for J++

Usage declining

Will retire with Visual Studio 2005 in 2015

Java/JSP Specified by Sun Apache Tomcat web container or application server Implements Java Servlet and JSP Apache mod_jk (Jakarta) manages communication between Apache and Tomcat Database access JDBC, web services

Specified by Sun

Apache Tomcat

web container or application server

Implements Java Servlet and JSP

Apache mod_jk (Jakarta) manages communication between Apache and Tomcat

Database access

JDBC, web services

Java/JSP: Frameworks Barracuda Apache Struts Formerly Jakarta project Spring Many others …

Barracuda

Apache Struts

Formerly Jakarta project

Spring

Many others …

Java/JSP vs. ASP.NET Similar technical framework: Sun: Java Virtual Machine (JVM) + Java Microsoft: Common Language Infratructure (CLI) + C# Similar compiler architecture Both use intermediate “Bytecode”. Sun: Java Bytecode Microsoft: Common Intermediate Language (CIL)

Similar technical framework:

Sun: Java Virtual Machine (JVM) + Java

Microsoft: Common Language Infratructure (CLI) + C#

Similar compiler architecture

Both use intermediate “Bytecode”.

Sun: Java Bytecode

Microsoft: Common Intermediate Language (CIL)

JSP vs. ASP.NET Similar execution environment Sun: Bytecode can be interpreted, compiled in advance or Just In Time (JIT) Microsoft: CLI can be compiled in advance or JIT Both extremely bloated Huge class libraries Continuum (often messy) between technical implementation and design Component version control seems to persist as a significant problem

Similar execution environment

Sun: Bytecode can be interpreted, compiled in advance or Just In Time (JIT)

Microsoft: CLI can be compiled in advance or JIT

Both extremely bloated

Huge class libraries

Continuum (often messy) between technical implementation and design

Component version control seems to persist as a significant problem

The rest: Applying the $Order Test Set a(&quot;c&quot;)=&quot;record c&quot; Set a(&quot;b&quot;)=&quot;record b&quot; Set a(&quot;a&quot;)=&quot;record a&quot; Set key=&quot;&quot; For { Set key=$Order(a(key)) If key=&quot;&quot; Quit Write &quot;<br>&quot;, key, &quot; = &quot;, a(key) }

Set a(&quot;c&quot;)=&quot;record c&quot;

Set a(&quot;b&quot;)=&quot;record b&quot;

Set a(&quot;a&quot;)=&quot;record a&quot;

Set key=&quot;&quot; For {

Set key=$Order(a(key))

If key=&quot;&quot; Quit

Write &quot;<br>&quot;, key, &quot; = &quot;, a(key)

}

PHP PHP ( Hypertext Preprocessor) Created 1994 By Rasmus Lerdorf One of the ‘3 Ps’ (along with Python, Perl) Used for over 20 million web sites Most popular Apache module M-like associative arrays Increasing OO capability Interfaces to numerous SQL-based databases MySQL popular choice

PHP ( Hypertext Preprocessor)

Created 1994

By Rasmus Lerdorf

One of the ‘3 Ps’ (along with Python, Perl)

Used for over 20 million web sites

Most popular Apache module

M-like associative arrays

Increasing OO capability

Interfaces to numerous SQL-based databases

MySQL popular choice

PHP: Frameworks Zend CakePHP PHOCOA Friendly Symfony CodeIgniter Prado Many others …

Zend

CakePHP

PHOCOA

Friendly

Symfony

CodeIgniter

Prado

Many others …

PHP: The $Order Test $a = array(); # An associative array $a[&quot;c&quot;]=&quot;record c&quot;; $a[&quot;b&quot;]=&quot;record b&quot;; $a[&quot;a&quot;]=&quot;record a&quot;; asort($a); foreach($a as $key => $value) { echo &quot;<br>&quot;,$key,&quot; = &quot;,$value; }

$a = array(); # An associative array

$a[&quot;c&quot;]=&quot;record c&quot;;

$a[&quot;b&quot;]=&quot;record b&quot;;

$a[&quot;a&quot;]=&quot;record a&quot;;

asort($a);

foreach($a as $key => $value) {

echo &quot;<br>&quot;,$key,&quot; = &quot;,$value;

}

Python Created 1991 By Guido van Rossum (Hired by Google late 2005) General purpose scripting environment Some implementations include compiler Multi-paradigm programming environment Functional Object Oriented Large standard library Modules for processing web requests Modules for database access

Created 1991

By Guido van Rossum (Hired by Google late 2005)

General purpose scripting environment

Some implementations include compiler

Multi-paradigm programming environment

Functional

Object Oriented

Large standard library

Modules for processing web requests

Modules for database access

Python: The $Order Test a = {} # A dictionary a[&quot;c&quot;]=&quot;record c&quot; a[&quot;b&quot;]=&quot;record b&quot; a[&quot;a&quot;]=&quot;record a&quot; keys = a.keys() keys.sort() for n, key in enumerate(keys): print &quot;<br>&quot;, key, &quot; = &quot;, a[key]

a = {} # A dictionary

a[&quot;c&quot;]=&quot;record c&quot;

a[&quot;b&quot;]=&quot;record b&quot;

a[&quot;a&quot;]=&quot;record a&quot;

keys = a.keys()

keys.sort()

for n, key in enumerate(keys):

print &quot;<br>&quot;, key, &quot; = &quot;, a[key]

Python: Frameworks Django Google App engine Pylons TurboGears Combination of CherryPy and MochiKit CherryPy MochiKit Zope Pyroxide Layered on mod_python Many others …

Django

Google App engine

Pylons

TurboGears

Combination of CherryPy and MochiKit

CherryPy

MochiKit

Zope

Pyroxide

Layered on mod_python

Many others …

Python: Other key developments IronPython Created 2006 Python implementation targetting .NET Written entirely in C# Similar initiatives include IronLisp and IronRuby.

IronPython

Created 2006

Python implementation targetting .NET

Written entirely in C#

Similar initiatives include IronLisp and IronRuby.

Ruby Created mid 1990s By Yukihiro &quot;Matz&quot; Matsumoto General purpose Multi-paradigm programming environment Functional Object Oriented (Many ideas from Perl and Smalltalk) Ruby On Rails: Created 2004 Complete web application development framework Consists of several packages ActiveRecord – Object Relational mapping

Created mid 1990s

By Yukihiro &quot;Matz&quot; Matsumoto

General purpose

Multi-paradigm programming environment

Functional

Object Oriented (Many ideas from Perl and Smalltalk)

Ruby On Rails: Created 2004

Complete web application development framework

Consists of several packages

ActiveRecord – Object Relational mapping

Ruby: The $Order Test a = {} # A hash a[&quot;c&quot;]=&quot;record c&quot; a[&quot;b&quot;]=&quot;record b&quot; a[&quot;a&quot;]=&quot;record a&quot; a.each { |key, value| puts “<br>#{key} = #{value}” }

a = {} # A hash

a[&quot;c&quot;]=&quot;record c&quot;

a[&quot;b&quot;]=&quot;record b&quot;

a[&quot;a&quot;]=&quot;record a&quot;

a.each {

|key, value|

puts “<br>#{key} = #{value}”

}

Ruby on Rails “ Ruby on Rails is an open source web framework that's optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration.”

“ Ruby on Rails is an open source web framework that's optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration.”

Ruby: Frameworks and other developments JRuby Java implementation of Ruby interpreter IronRuby Ruby for .NET. Implemented on Dynamic Runtime Library (DLR) layered over Common Language Runtime (CLR) Ramaze Lightweight option Camping

JRuby

Java implementation of Ruby interpreter

IronRuby

Ruby for .NET.

Implemented on Dynamic Runtime Library (DLR) layered over Common Language Runtime (CLR)

Ramaze

Lightweight option

Camping

Perl Created 1987 By Larry Wall General purpose scripting language Emphasis on text processing Suited to the needs of web programming DBI (Database Interface) modules

Created 1987

By Larry Wall

General purpose scripting language

Emphasis on text processing

Suited to the needs of web programming

DBI (Database Interface) modules

Perl: The $Order Test ## Set up associative array $a{&quot;c&quot;}=&quot;record c&quot;; $a{&quot;b&quot;}=&quot;record b&quot;; $a{&quot;a&quot;}=&quot;record a&quot;; foreach $key (sort keys %a) { print &quot;<br>$key = $a{$key}&quot;; }

## Set up associative array

$a{&quot;c&quot;}=&quot;record c&quot;;

$a{&quot;b&quot;}=&quot;record b&quot;;

$a{&quot;a&quot;}=&quot;record a&quot;;

foreach $key (sort keys %a) {

print &quot;<br>$key = $a{$key}&quot;;

}

Perl: Frameworks LAMP “solution stack” Linux, Apache, MySQL, Perl (or one of the other “3 Ps”) Mason Catalyst Many others

LAMP “solution stack”

Linux, Apache, MySQL, Perl (or one of the other “3 Ps”)

Mason

Catalyst

Many others

CSP & WebLink WebLink (1996) succeeded by CSP (~2000) Implemented over CGI and Web Server APIs Proxy to Caché Responses generated entirely in Caché WebLink M based. Support for legacy M systems CSP Close coupling with Caché Objects and Development environment

WebLink (1996) succeeded by CSP (~2000)

Implemented over CGI and Web Server APIs

Proxy to Caché

Responses generated entirely in Caché

WebLink

M based. Support for legacy M systems

CSP

Close coupling with Caché Objects and Development environment

CSP & WebLink: Particular highlights Support for state-aware sessions Migration of legacy M/Caché code to the web CSP equivalent: Preserve mode 1 WebLink Event Broker (1998) Early incarnation of AJAX-like techniques A “first” for InterSystems In-form scriptable communication with server Initially Java applet based; then XMLHTTP CSP equivalent: Hyperevents

Support for state-aware sessions

Migration of legacy M/Caché code to the web

CSP equivalent: Preserve mode 1

WebLink Event Broker (1998)

Early incarnation of AJAX-like techniques

A “first” for InterSystems

In-form scriptable communication with server

Initially Java applet based; then XMLHTTP

CSP equivalent: Hyperevents

CSP & WebLink: Development Frameworks WebLink Developer (WLD) Code generator for WebLink applications Run-time environment to support applications and security. Precursor to Zen and EWD CSP Zen Developer focused environment Enterprise Web Developer (EWD) Designer focused environment Reaches out to legacy WebLink/WLD applications

WebLink Developer (WLD)

Code generator for WebLink applications

Run-time environment to support applications and security.

Precursor to Zen and EWD

CSP Zen

Developer focused environment

Enterprise Web Developer (EWD)

Designer focused environment

Reaches out to legacy WebLink/WLD applications

WebLink/CSP vs. The rest Non CSP/WebLink environments Requests processed and responses generated on web server host Possible multiple round trips to database Will need to increase capacity of web server tier sooner Load-Balancing techniques

Non CSP/WebLink environments

Requests processed and responses generated on web server host

Possible multiple round trips to database

Will need to increase capacity of web server tier sooner

Load-Balancing techniques

WebLink/CSP vs. The rest CSP/WebLink Web server extension as intelligent proxy/router Requests and complete response generated in Caché Single round trip to database per request/response cycle Integrated scripting environment and database ideal for web application run-time environment Better performance/throughput per web server

CSP/WebLink

Web server extension as intelligent proxy/router

Requests and complete response generated in Caché

Single round trip to database per request/response cycle

Integrated scripting environment and database ideal for web application run-time environment

Better performance/throughput per web server

MGWSI Gateway: Connecting all environments to Cache Uniform/Normalized interface to Caché Underpins Enterprise Web Developer (EWD) Currently supported: PHP (m_php) JSP (m_jsp) ASP.NET (m_aspx) To be released shortly: Ruby (m_ruby) Python (m_python) Future support anticipated: Perl (m_perl) www.mgateway.com

Uniform/Normalized interface to Caché

Underpins Enterprise Web Developer (EWD)

Currently supported:

PHP (m_php)

JSP (m_jsp)

ASP.NET (m_aspx)

To be released shortly:

Ruby (m_ruby)

Python (m_python)

Future support anticipated:

Perl (m_perl)

www.mgateway.com

Conclusion Note developments in service providers Keep eye on trends in all web development technologies. Don’t be afraid to evaluate lesser known technologies provided … there is a vibrant community supporting them.

Note developments in service providers

Keep eye on trends in all web development technologies.

Don’t be afraid to evaluate lesser known technologies provided … there is a vibrant community supporting them.

Add a comment

Related pages

20 brilliant tools for web design and development ...

20 brilliant tools for web design and development. ... icons you need but you can pick and choose the glyphs you need and ... The best free web fonts ...
Read more

Setting up a Django development environment - Learning web ...

This is the best way to get the latest ... recommend for both development and production environments). ... using the development web ...
Read more

Top 5 Web Application Languages - Red27 Consulting

Make sure that whatever you choose is ... open-source and innovative Web development. ... important to him as it was to me and the rest of our ...
Read more

GitHub - go-martini/martini: Classy web framework for Go

... Classy web framework for Go. ... router_test.go: Choose best matching ... to provide special functionality for development environments vs ...
Read more

Understanding SOAP and REST Basics And Differences

Understanding SOAP and REST Basics And ... often centers on which Web service best meets ... enterprise environments (REST assumes direct point ...
Read more

Best practices for Web services: Part 1, Back to the basics

... of web services that choose to ... of web services in enterprise environments. ... best practices for enterprise development.
Read more

Set up an on-premises development environment for ...

Learn how to set up a development environment that ... See Use best practice ... In Internet Explorer, go to Tools. Choose Internet ...
Read more

Build and Share Data Science Projects - 3Blades

3Blades offers a cloud based development ... Run multiple workspace environments. 3Blades gives you the option to choose which ... Rest easy with secure ...
Read more

The Best PHP Framework for 2015: SitePoint Survey Results

The Best PHP Framework for 2015: SitePoint Survey ... one command and you’re good to go? ... Local Development Environments for Designers and ...
Read more