To support closures fully, a language needs to provide support for manipulating, invoking, and creating functions at run time and for functions to capture the environment in which they were created.
You should be able to develop Web applications in any language and environment you chose and support the ready exchange of information between different components, irrespective of their source.