views:

311

answers:

8

Is there a programming language suitable for building web applications, that is compiled, strongly-typed, and isn't ASP.NET?

I thought of using Mono (http://www.mono-project.com/), but I wonder if there are any other alternatives.

(If the language and framework are open-source, that's a big plus!)

+7  A: 

Not sure what do you mean by saying "compiled". What about Java ?

Java has a lot of frameworks for web development. For example Tapestry:

Tapestry is an open-source framework for creating dynamic, robust, highly scalable web applications in Java.

aku
+4  A: 

Java meets all the criteria

Simon
+2  A: 

What exactly are you asking for?

Are you asking for something compiled, or something performant?
Are you asking for something strongly typed, or are you asking for something that will easily help you debug errors? (unit testing is sometimes a better subtitute for compilers)
Is there a requirement from your customer that it's not written in ASP.Net?
Is there a technical requirement that .Net code cannot be run?

You are asking for a technology to solve problems you haven't properly defined.

askheaves
+2  A: 

The spring framework and the java language.

http://www.springframework.org/ opensource and extensively used in the industry.

In particular checkout spring-mvc and spring web-flow modules which make creating web projects a lot simpler.

Paul Whelan
A: 

Maybe you should meant "compiled to machine code"?

C# and Java are compiled to an intermediate language which is then interpreted at run time.

Most decent interpreters compile this to actual machine code at runtime to speed up (Just In Time compiling).

Of course it is not as efficient, but many language features would be extremely hard to implement otherwise (for example Garbage Collection).

Also having an intermediate language allows your compiled code to run on different platforms.

Sklivvz
the JIT/VM system is for the convenience of the runtime and compiler writers. You can implement GC (for example) in native code quite well - look at the boehm GC for example.
gbjbaanb
gbjbaanb: That's true, but I'm not sure I'd hold up a conservative GC for C as a great example of a GC. :-)
Ken
+1  A: 

Mono is not a different programming language, it's just an open source implementation of the .NET framework for Unix systems (and Macs too). It aims to be totally compatible with .NET, so you'd end up using C# and ASP.NET just the same.

axel_c
+3  A: 

If you mean compiled to win32 code, and not to an intermediate language, try Delphi.

Steve
A: 

Is there a programming language suitable for building web applications, that is compiled, strongly-typed, and isn't ASP.NET?

Just for the sake of completeness: In theory, one could even use Ada to satisfy those requirements:

AdaCGI is an Ada 95 interface to the "Common Gateway Interface" (CGI). AdaCGI makes it easier to create Ada programs that can be invoked by World Wide Web (WWW) HTTP servers using the standard CGI interface. Using it, you can create Ada programs that perform queries or other processing by request from a WWW user. AdaCGI was formerly named "Package CGI".AdaCGI is open source/free software, and is released using the LGPL ("Lesser General Public License") license.

Ada for the Web: This website is dedicated to promoting the use of Ada95 as a major language for programming Web and Internet applets and applications, servers and browsers.

There is also the Ada "aws" package available at http://libre.adacore.com/libre/tools/aws/

First of all, AWS stands for Ada Web Server but it is more than just another Web server…

AWS is a complete framework to develop Web based applications. The main part of the framework is the embedded Web server. This small yet powerful Web server can be embedded into your application so your application will be able to talk with a standard Web browser like Microsoft Internet Explorer or Netscape Communicator for example. Around this Web server a lot of services have been developed.

The framework includes:

* A Web parameters module. This module takes care of retrieving the forms or URL parameters and to build an associative table for easy access.
* A session server, this is a very important module to be able to keep client’s data from page to page.
* Support SOAP to develop Web Services.
* A tool (based on ASIS) to generate a WSDL document from an Ada spec.
* A tool to generate Web Services stubs/skeletons from a WSDL document.
* A template parser, this module makes it possible to completely separate the Web design from the code. No more scripting into your Web page. This template engine is amazingly fast due to its concurrent cached compiled templates support.
* An Ajax runtime based on templates hiding javascript.
* Support for Secure Sockets (HTTPS/SSL), this is based on OpenSSL library.
* Support for large servers using dispatchers based on URI, request methods, timers.
* Support for virtual hosting (dispatchers based on the host name).
* Support for server push.
* A directory browser ready to be used in any application.
* A status page to get many information about the current AWS server.
* A log module. Log files keep information about all resources requested to the server.
* Hotplug modules which can be loaded/unloaded dynamically to add specific features to a server.
* A light communication API to exchange data between applications using the HTTP protocol.
* A configuration API to tune/change the server parameters without recompilation.
* A client API to retrieve any Web page from a Web site.
* A Web Page service to build a simple static page server.
* Support for SMTP, LDAP and Jabber protocols.
* And more…

A server built with AWS is very easy to deploy. You just need to copy and launch a single executable. There is no Web server installation and configuration steps to do.

See http://www.adacore.com/wp-content/files/auto_update/aws-docs/aws.html for the aws documentation

http://en.wikibooks.org/wiki/Ada_Programming/Libraries/Web

none