Click here to Skip to main content
Click here to Skip to main content
Go to top

My Personal Software Development Stack

, 1 Oct 2014
Rate this:
Please Sign up or sign in to vote.
My Windows Sever 2003 reaches its end of life in 2015. I do not look forward to moving to Server 2012. Surely there has to be a better, portable, and cross platform solution that features zero install and fits on a USB stick.

Introduction

This article discusses my search for a zero install, cross platform software development stack to replace my Windows Server 2003, IIS7, Coldfusion 8, PHP stack.

Background

I am comfortable in the Windows server world of 2003 and IIS6 and IIS7. Microsoft has announced a sunset date in 2015 for server 2003 support. I have been using Coldfusion 8 and FlashBuilder to develop applications that have about 50,000 users. I use mySQL as my database. I really should update to Server 2012 but neither Coldfusion 8 or 9 installs with IIS8. My existing applications will also not run (no Flash support) on IOS or Android 4.x tablets which are becoming more commonplace in the enterprise.

I would also like to have the option of deploying to IOS, Linux, or Windows servers. I would also like my complete software stack to be open source and my software development languages to be polyglot to take advantage of more popular languages than ColdFusion.

My Solution

Railo is an open source CFML (ColdFusion) engine that runs my existing Coldfusion code with very little modification. It has an express Jetty install that many users find is fast and secure enough to be used in production. Jetty is embedded in many software applications (like Eclipse) and more than meets my needs. It is also zero install. Unzip it and copy to my USB stick and voila I have access to all my legacy cfml and cfc scripts.

My replacement for Flashbuilder will be one of three popular UI frameworks (KendoUI, DHTMLX, Webix) because they are over server side scripts in .NET, Java, or PHP. DHTMLX also offers its scripts in CFML, but it is now 2 versions behind the other options.

I could use the JavaScripts but honestly I find Java very verbose. I could use the .NET scripts but that would tie me to Windows servers. I could use the CFML scripts but that would tie me to DHTMLX, which leaves me PHP. It turns out it is very easy to get PHP running in my Jetty install by downloading Quercus from quercus.caucho.com,

Copy the Quercus jar into railo/library/ext directory and edit railo/ext/webdefault.xml file by adding the following lines just after the JSP servlet mapping (about line 450):

<servlet>
    <servlet-name>Quercus Servlet</servlet-name>
    <servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Quercus Servlet</servlet-name>
    <url-pattern>*.php</url-pattern>
</servlet-mapping>

Start up your Railo server and voila, you can now serve up PHP scripts. Quercus supports PHP 5.x but not all the libraries or extensions. It does support everything I need for the vendor supplied scripts I am looking at. Apparently PHP executes faster as a JVM language than it does under the normal PHP processor. I have not tested this, but it is fast enough for my needs.

Okay, I am getting there, but I hear Phyhon is a great language to use if you do not like typing. That's definitely me!

Go to the Jython website http://www.jython.org/downloads.html and download the Jython 2.7beta3 - Standalone Jar and place it in the same directory (railo/library/ext directory) you placed the Quercus jar file.

Then, once again edit railo/ext/webdefault.xml file and add the following, just after the Quercus entries.

  <servlet>  
    <servlet-name>PyServlet</servlet-name>  
    <servlet-class>org.python.util.PyServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>  
  </servlet>

  <servlet-mapping>
    <servlet-name>PyServlet</servlet-name>
    <url-pattern>*.py</url-pattern>
  </servlet-mapping>

Then, start up the Railo server and start serving up python files. If you want to use some of the additional Python libraries, you will have to copy them to your deployment directory or place them in the Railo/library directory.

Jython supports Python 2.7.

Points of Interest

My editor of choice is Adobe brackets which can be installed just under the Railo directory. It has syntax highlighting for Railo, PHP, and Python.

I now have a RAILO directory of about 250 MB that easily fits and executes from a USB stick. My only install is mySQL and that sits on its own server (or in the cloud) and is separate from my software development stack.

My stack is all open source and cross platform and I no longer need to explore 'What's Changed?' in IIS in order to deploy my app to a new server.

I am also the sole developer in my software company. I apply the KISS principle to everything I try to accomplish.

History

  • 1st October, 2014: Initial version

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

James Dale
Software Developer (Senior)
Canada Canada
I started programming on a Commodore PET with 8K memory and a cassette drive for storage. I used Commodore BASIC and 6502 assembler. I have been coding for 35 years and still consider Delphi 7 the most productive IDE and language I have used. I use C# and Visual Studio when I have to in order to satisfy some clients.
 
I prefer ColdFusion and Railo for server language as they are so productive. Again I use asp.net when I have to.
 
I am a big fan of JavaScript on the client but I am still not sold on Node.js as a server platform.

Comments and Discussions

 
GeneralBlog entry [modified] PinprofessionalPIEBALDconsult7hrs 34mins ago 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140926.1 | Last Updated 1 Oct 2014
Article Copyright 2014 by James Dale
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid