2Answer
When you type in a URL, lots of code is at work to bring a page to your screen. What connects your site’s database to the browser, creating a smooth, user-friendly experience? That’s the software built by server-side scripts, languages that build your site behind the scenes. The goal of this software? To provide a seamless experience for the user that’s as close to a desktop application as possible.
There are many server-side languages working toward that end goal. The language you choose for your site depends on a mix of your site’s requirements, your database/operating system setup, and the preferences of your development team. Knowing what each script can offer and what sets it apart is helpful in deciding how to build your back end, and who to hire
A QUICK LOOK AT YOUR WEBSITE’S BACK END
The back end comprises three parts: the server, your database, any APIs, and a back-end web application, software written via server-side languages. The server is a powerful computer that runs the back-end software, the database houses your site’s data, and the software communicates between the two. For example, if a user is updating a profile on a networking site, the server-side scripts will gather the information the user enters, the application will process it on the server, then interact with the database to update that information there.
Server-side scripts are used by back-end web developers to build the back-end software of a website—the mechanics we don’t see, but that make a site’s usability and functionality possible. These languages create the communication channel between user, server, and database. Anything that isn’t explicitly written into the text markup of a site is front-end or back-end software. Any data that a user requests in the browser (e.g., the fields in drop-down menus, photos, or user profiles) is delivered via server-side scripts, which create a channel between server and end user that requests, edits, and deletes things in the database. In the browser, front-end scripts make that information available to the user.
SERVER-SIDE SCRIPT BASICS
- Runs on a server, embedded in the site’s code
- Designed to interact with back-end permanent storage, like databases, and process information from the server to access the database—like a direct line from user to database
- Facilitates the transfer of data from server to browser, bringing pages to life in the browser, e.g., processing and then delivering a field that a user requests or submits in a form
- Runs on-call. When a webpage is “called up,” or when parts of pages are “posted back” to the server with AJAX, server-side scripts process and return data
- Powers functions in dynamic web applications, such as user validation, saving and retrieving data, and navigating between other pages
- Plays a big role in how a database is built from the ground up and managed afterwards—an example of how roles often overlap in all aspects of development
- Build application programming interfaces (APIs), which control what data and software a site shares with other apps
SERVER-SIDE CODE AND DATABASES
How it works: If a database is a site’s library, server-side scripting processes what the user is looking for via the server, then locates the book, chapter, page, and exact line of data, delivering that information back to the browser. It’s designed to be smooth, fast, and seamless.
This is all possible through the server-side software and middleware your back-end developer writes, which create a tailored channel from site to database. Information for your site resides on the server until it’s requested, which makes your site both fast and secure.
POPULAR SERVER-SIDE LANGUAGES
- PHP: The most popular server-side language on the web, PHP is designed to pull and edit information in the database. It’s most commonly bundled with databases written in the SQL language. PHP was designed strictly for the web and remains one of the most widely used languages around. It’s easy to install and deploy, is staying competitive with lots of modern frameworks, and is the foundation for a number of content-management systems. PHP-powered sites: WordPress, Wikipedia, Facebook
- Python: With fewer lines of code, the Python programming language is fast, making it ideal for getting things to market quickly. The emphasis is on readability and simplicity, which makes it great for beginners. It’s the oldest of the scripting languages, is powerful, and works well in object-oriented designs. Python-powered sites: YouTube, Google, The Washington Post
- Ruby: If you’re expecting complicated logic on the database side of your site, the Ruby programming language is an excellent option. Unlike Python, Ruby is equal parts simplicity and complexity, pairing simple code with more flexibility and extra tools. Ruby bundles the back end with database functionality that PHP and SQL can offer as a pair—it’s great for startups, easy maintenance, and high-traffic demands. It requires developers to use the Ruby on Rails framework, which has vast libraries of code to streamline back-end development. Ruby-powered sites: Hulu, Twitter (originally), Living Social, Basecamp
- C#: The language of Microsoft’s .NET Framework—the most popular framework on the web—C# combines productivity and versatility by blending the best aspects of the C and C++ languages. It’s excellent for developing Windows applications, and can be used to build iOS, Android mobile apps with the help of a cross-platform technology like Xamarin.
- C++: Great for complex applications also built on the .NET Framework, the C++ programming language is a difficult but high-powered language that works well for data-heavy sites. Speed is central to C++, and it runs well alongside other languages like Java and Python.
- Java: A subset of the C language, Java comes with a huge ecosystem of add-on software components. At its core, Java is a variation of C++ with an easier learning curve, plus, it’s platform independent thanks to the Java Virtual Machine. “Compile once, run anywhere” is its motto—and it’s excellent for enterprise-level applications, high-traffic sites, and Android apps. Java sites: Twitter, Verizon, AT&T, Salesforce
- Erlang: A general-purpose programming language, Erlang is also a concurrent language, which means several processes can run simultaneously on the language-level without external library support. It’s used in the LYME and LYCE stacks, numerous CMS and databases, GitHub, Facebook chat, and Goldman Sachs, supporting its high-frequency trading requirements.
…AND THEIR SERVER-SIDE FRAMEWORKS
- Ruby on Rails: This Ruby framework is the overriding way to implement Ruby. Its “gems” include plug-ins and libraries of code that streamline development.
- ASP.NET: This Microsoft framework is the most popular enterprise-level framework—it supports multiple programming languages simultaneously for one project. So, the same application can be built with both C# and C++, via CLI (common language interface). It’s most recent iteration, ASP.NET 5, is now open to non-Windows platforms for the first time.
- Django: This Python framework was developed to meet the needs of development in a fast-paced environment.Django sites: Pinterest, Nasa, Pitchfork
- Node.js: JavaScript is typically a front-end script, but with the Node.js framework, it can be used in server-side technology, from APIs to entire stacks. Its core selling point is how it handles client-server communication—it’s fast, doesn’t bottleneck, and is ideal for real-time apps like chat rooms, data-heavy applications, and any software that requires the streaming of fresh content, like a news feed. Node.js sites: Dow Jones, PayPal, LinkedIn
- Express.js & Koa: These JavaScript-powered middleware frameworks work on top of the Node.js development environment and control the flow of information on the back end of a site.
- answered 8 years ago
- Community wiki
The market for server-side Web development solutions is a crowded one, these days! Perl, ASP, PHP, JSP, Cold Fusion and many more specialized choices abound. How is a newcomer supposed to know what to learn and what to use? Choosing a platform with which to build your first major database-driven Web application is nothing like choosing an HTML editor — you can’t just download a half dozen candidates and take them all for a test drive one lazy afternoon. Some of these languages can take an uninitiated Web developer months of work to truly understand and come to use comfortably. Unless you’ve got time to take a year off and curl up with a pile of books, you’re going to need some guidance!
In this article, I’ll touch on each of the major options on the ‘net today. For each, I’ll explain the main selling points, the inevitable drawbacks, the relative costs and the neccessary compromises. I’ll also profile the target developer for each of these technologes; that is, I’ll shortly explain who they had in mind when the geniuses behind each of these technologies first created them. If any of these profiles remind you of your own situation, that should be a pretty good sign that you’ve found the right technology.
The choice of a server-side programming language is a constant source of heated debate on the Internet today. Just like HTML editors, everyone has their favorite scripting language and most people have very good reasons for their choices. However, the very nature of server-side development — that Web browser compatibility is not an issue — allows for two technologies that tackle the same problem in very different ways to both succeed in equal measure! For this reason, this article is not about deciding which platform is the best of all, but which is best for you. And hey: even if you still can’t decide after reading this, or if it turns out you’ve already made the wrong choice, at least you’ll have some idea of what you’re up against!
CGI/Perl
Perl has been around longer than the World Wide Web itself. Version 1 was released on December 18th 1987, a full decade before the other languages covered in this article were even conceived! If you’re new to this stuff, you’re probably wondering how a server-side Web development language could have existed before the Web itself. You see, Perl was not created as a Web development language. Perl is, in fact, a multipurpose scripting language that was designed to handle tasks that involve a lot of text manipulation. Perl is very good at juggling pieces of text from various sources and combining them to form complete documents, which is exactly what is involved in server-side Web development.
In the decade and a half since its creation, Perl has been expanded by means of modules, pieces of somtimes-complex functionality that can be plugged into the language to adapt it to various specialized purposes. One such purpose is the creation of dynamic Web content via the Common Gateway Interface (CGI) supported by the vast majority of Web servers. CGI is a standard means by which the Web server software can hand a browser’s request for a Web page off to any program. Truth be told, CGI programs can be (and have been, on occasion) written in C/C++ if necessary. With its convenient handling of text, however, Perl has always been better suited to the job, and now that Perl comes with the CGI.pm
module built in, most of the nitty gritty details of handling things like HTML form submissions are handled for you. As a final boon, the Comprehensive Perl Archive Network (CPAN) was founded to provide a centralized source for add-in modules, sample scripts, and in some cases fully developed Web applications.
Today, versions of Perl are available for free on all major operating systems (from mainstream Windows to the most obscure Unix variant), and if you want to make it do something complicated, chances are someone has already written a module to make your job easier. The only downside to this language is that, since it wasn’t purpose-built for Web development, it hasn’t been optimized either for speed, scalability, or ease of use in a Web server setting. There are much easier languages out there to learn that can do just as much in the Web development arena, but Perl will also let you do a lot more than just Web development if you need to.
Advantages:
- A mature language with over a decade of history, you’re less likely to run into bugs in Perl than in any other server-side language.
- It’s FREE, though a good book to show you the ropes may set you back a little.
- Most good Web hosts support Perl, so you probably won’t have to pay extra for hosting.
- A vast network of dedicated Perl developers all over the world are at your disposal. Not only will they answer your questions on countless Perl discussion groups and mailing lists, but the CPAN archive (among others) will give you plenty of examples to work from.
Drawbacks:
- Although some options exist to improve the situation, Perl doesn’t scale especially well on busy servers. If you’re looking to create a Web application that can field a lot of hits in a short space of time, you may want to look elsewhere.
- Perl is notorious for having five different ways of doing even the simplest thing, which can make learning from the work of others difficult if they didn’t use the same method you’re used to seeing. Additionally, Perl developers are notorious for finding the shortest way to write any given program, so you may be surprised to look at a sample script only to find that a complete ecommerce shopping cart script has been written in three lines of code, most of which is squiggles and backslashes.
- Perl is optimized for the Unix platform on which it was created, so if you expect to work on a Windows server, you likely have better choices performance-wise.
- Perl is Open Source software, which means there is no formal support for it. Despite the huge support community available to you, if something goes wrong, the only person you can really count on is yourself.
Target Developer:
Most Web developers who still work with Perl today tend to be Unix administrators and users who also put Perl to work in other areas of their system. For people like these, Perl is a comforting ‘go anywhere, do anything’ tool that can always be relied upon. If you’re an inexperienced developer faced with the task of maintaining a site that was originally written in Perl, then grab a couple of good books and prepare to add a truly powerful tool to your arsenal.
ASP
Before we go any further, let’s get something out of the way for the purists out there. Microsoft Active Server Pages (ASP) is not a language. Rather, ASP is a framework that lets you combine one of a number of scripting languages (VBScript and JavaScript being the most popular choices) with an expandable set of software components. These components are treated as objects by the scripting language of your choice when it is used as part of the ASP framework. In essence, the power of ASP lies in its ability to combine relatively simple scripting languages like VBScript and JavaScript with powerful software components that are normally used by C/C++ developers.
Okay, that’s the Microsoft sales pitch out of the way. Now let’s face facts: for all practical purposes, ASP might as well be a language. You simply get a choice between writing VBScript ASP or JavaScript ASP. Since most of the sample code out there is written in VBScript, your choice is all but made for you. Thus, ASP is generally considered to be a language for developing dynamic Web sites using VBScript, and under that umbrella it excels. ASP is easy to learn, powerful enough for most mainstream server-side Web development, and quite good performance-wise.
ASP is closely linked to the Windows operating system (most of the software components that ASP relies on for its functionality are Windows-specific) and the Microsoft Internet Information Services Web server software. For these reasons, it is neither practical nor desirable to run a Web site based on ASP on anything but a Windows-based server. If you’re setting up your own Web server, that means you must invest in a copy of Windows 2000 Server (although much of ASP runs on Windows 2000 Professional, IIS is not as scalable on that platform). If you’re paying for Web hosting, it means paying for a Windows-based server, which is usually more expensive. Any way you look at it, ASP will cost you money to run. There are versions of ASP that can be run on an Apache server running under Linux, but unless you’re specific aim is to move an existing ASP Web site onto a Linux server, there is little point.
Another concern for ASP developers is the relatively limited nature of the components that come bundled with ASP. If all you need for your application is database connectivity, a search engine, email handling services, basic form processing and session tracking, then ASP will suit you just fine. Any less common functionality, however, will usually require you to install additional software components on your server. There are many companies out there that produce components for use with ASP that generate PDF files, interact with FTP servers, handle binary file uploads and many other things. Unfortunately, these components, like ASP, tend to be commercial solutions that will cost you money.
The upside of all this is that ASP is a very well supported technology, with all the backing of the Microsoft development community behind it. MSDN, the Microsoft Development Network provides a wealth of technical articles and reference material for ASP developers, and Microsoft support personnel will gladly investigate any problems you have in your development efforts (for a price). If at any time you absolutely need an answer to a question, you can rest assured there will be someone there whose job it is to give you the answer.
Advantages:
- Fairly easy to learn, though programming is required.
- Built into Windows 2000 Server — no installation headaches.
- Professional support available.
Drawbacks:
- It’s not free (unless you’re already using a Windows server)
- Specialized functionality may require you to purchase commercial components, or develop them yourself in C/C++ or Visual Basic.
- If you’re used to C-style syntax (shared by C/C++, Java, Perl, PHP, etc.), you may find the idiosyncrasies of VBScript difficult to come to grips with.
Target Developer:
If you’ve done any development with VBScript or Visual Basic, or have developed COM objects in Windows before, then this is definitely the Web development platform for you. Also, ASP is about as friendly to non-programmers as a programming language can get (but if you really hate programming, check out Cold Fusion, up next). If you’re comfortable committing to Windows for your Web server platform and can afford the costs involved, or if the company you work for simply demands the level of support that Microsoft can provide, then ASP is a great technology to learn.
Cold Fusion
For the Web desginer who has never written a program before, the choice of server-side Web development platform can be a dreaded one. Whichever way you go, you’re faced with an big, evil programming language to learn and your head just starts to ache… Originally created by Allaire in 1995 and recently bought out by Macromedia, Cold Fusion was designed to be different. Instead of a scripting language, Cold Fusion gives you a set of tags to learn. Yes, tags — just like those HTML tags you’ve come to know and love!
Let’s take the example of publishing information stored in a database on the Web. With the vast majority of server-side languages, you need to add code to your Web page to break out of HTML mode, connect to the database, request the entries from the database that you want to display, and process the results that the database sends you to display it as part of the Web page. In Cold Fusion, this common task is done with two tags: a tag, the attributes of which give the query a name and indicate what information to retrieve from which database. A second tag, refers to the query and lets you use standard HTML to format and display the results of the query.
To the experienced programmer, this tag-based system may sound restrictive and inflexible, but with a built-in library of over 300 tags in the latest version, and the ability to add custom tags with more traditional programming languages like C/C++ and Java, Cold Fusion is anything but restrictive. Cold Fusion 5.0 includes tags that automatically generate graphs from database data, seamlessly provide search facilities on your Website, and even generate HTML forms with full JavaScript validation code. For the desginer who is forced to acquire server-side skills, Cold Fusion comes with the utopian promise of only having to learn a few new tags!
Like ASP, Cold Fusion is a commercial server platform, which means it will cost you money to run it whether you set up your own server or rent space on a Web hosting provider. Unlike ASP, however, Cold Fusion is not tied to the Windows platform. Cold Fusion can integrate just as easily with Apache running under Linux as it can with IIS on Windows 2000.
Advantages:
- Extremely easy to learn — no programming required!
- Powerful and very scalable (latest version has support for both software- and hardware-based server clustering).
- Professional Support from Macromedia.
- Cross platform.
Drawbacks:
- Expensive to set up your own server: Cold Fusion Server Professional 5.0 costs $1,295
- Programmers may not like the tag-based development methods.
Target Developer:
Web designers who are comfortable with HTML but need to add server-side skills to their repertoire without having to learn a programming language. From the average developer’s point of view, learning Cold Fusion is just like learning some new tags. Non-designers are also likely to warm up to the neatness of server-side programming with tags, so if you’re tired of debugging your server-side scripts, Cold Fusion might be worth a look!
PHP
A relative newcomer in the server-side development arena, PHP has gained a large following among programmers with its familiar syntax and comprehensive function library. Also, its relatively simple syntax and low, low price (it’s free!) has made it an attractive alternative to Microsoft’s ASP for new developers.
PHP has been dubbed by some to be ‘Perl killer’ of the server-side scripting world. For purposes of Web development, PHP can do almost everything that Perl can, and usually does it quicker and easier. Unlike Perl, which usually runs as a CGI program invoked by the Web server to handle each page request, PHP can integrate with your Web server so that it operates much more efficiently.
PHP is an extremely capable language, with a vast array of built-in functions to do everything from tracking user sessions to generating dynamic graphics and even PDF files on the fly! No modules to install, no commercial add-ins to buy… PHP handles everything itself! In fact, just about the only weakness of PHP is that it’s relatively difficult to expand the language to add non-standard functionality that is not handled by its built-in functions. Doing this requires a knowledge of C/C++ programming and is not for the faint of heart! Fortunately, you’d have to come up with a very esoteric Web application to require functionality that isn’t already built into PHP.
PHP is free, cross-platform, Open Source software. It integrates with all major Web servers on all major operating systems. This is a great boon for developers on a budget, because they can set up a complete Linux-based Web server with PHP support and not pay a dime for software! The downside of this, of course, is that there is no formal support for any problems you may encounter with PHP. Also since PHP is such a new and actively developed technology, there are still occasional bugs found in the latest versions. Don’t let these niggles put you off, though — PHP has an extremely active user community (a large segment of which can be found in our very own SitePoint Forums!) that is always eager to help you with any stumbling blocks, and the current versions of PHP are quite stable and reliable.
Advantages:
- Fairly easy to learn, especially for developers with C/C++, Java, or Perl experience.
- Active user community willing to lend you a hand getting started.
- Everything’s built right into the language.
- It’s free!
- Cross-platform.
Drawbacks:
- This language was designed to be programmer-friendly, which unfortunately makes it a little less friendly to non-programmers.
Target Developer:
Web developers on a budget who enjoy simple programming (e.g. JavaScript), or don’t mind learning how. PHP gives you a great deal of power with relatively simple code structure, but may not be suited to very high end applications that aren’t supported by PHP’s built-in features.
Java
Java is arguably the most powerful platform for server-side Web development today. From small Java programs (Servlets) that handle Web page requests to JavaServer Pages (JSPs) that combine HTML with custom tags and Java code, and even up to Enterprise JavaBeans (EJBs), software components with sophisticated abilities to carry information seamlessly across servers and networks to accomodate distributed applications, Java is truly a hot technology.
An experienced Java Web developer can easily pull in salaries in excess of US$100,000/yr. As you might expect, there’s a reason for that: Java is not easy to learn! Unlike scripting languages like Perl, ASP and PHP, Java is a full-fledged programming language fully capable of writing big programs! Someone with a little programming experience could expect to pick up a working knowledge of the Java language in a month or two with the help of a good book, and in another month would likely be able to pick up the basics of simple server-side programming with Java. Now, if you’re interested in making a career in server-side programming then that may not seem like much, but if you just want to get something working quickly, a simpler language like PHP can have you up and running in a week or less!
Java is renouned for its Write One, Run Anywhere (WORA) philosophy, and indeed Java can be run on all major Web servers and all major operating systems. Java Web applications can also be bundled up into a standard Web Application Archive (.WAR) files that can then be installed on any Java-enabled Web server, no matter the platform. The makers of Java planned for this mechanism to be used to distribute commercial Web applications for use on Java Web servers; however, in my experience, Java Web applications tend to be customized solutions to complex problems, rather than sellable solutions that you can buy online.
Many different vendors produce the plug-ins that enable Web servers like Apache and IIS to run Java Web applications, and while most of them are free for personal use and development, the majority must be paid for before you can use them to serve a commercial Website.
Advantages:
- Extremely powerful and scalable.
- Cross-platform.
- Most Java server plugins are free for personal and development purposes.
Drawbacks:
- Java takes a lot of work to learn. Don’t even start if you’re not serious about learning object oriented programming.
- Most Java server plugins must be paid for if they are to be used to host a commercial Web site.
Target Developer:
Serious developers who want the ultimate in power, flexibility and scalability for their Web applications, and don’t mind paying for it in sweat, tears and development time.
Summary
In this article, we looked at the relative features, benefits and downfalls of all the major server-side development options available today:
- Perl: a mature, cross-platform language that can be hard to understand
- ASP: Microsoft’s powerful, Windows-based framework
- Cold Fusion: a powerful, tag-based option for non-programmers
- PHP: a cross-platform, open-source alternative with lots of features built in
- Java: the ultimate in power and flexibility, for serious programmers
Hopefully armed with the low-down on all these options, you’re feeling better-equipped to tackle the big decision of which to learn and use for your next project. If you’re still in need of some guidance, be sure to drop by our Server-Side Internet Development forum at SitePoint Forums. We’ll be glad to help!
- answered 8 years ago
- Community wiki
Your Answer