I've got a small project coming up where I can choose any language I want. My team prefers the feeling of safety we get from static typing. In our experience, dynamically typed languages can be more difficult to maintain (we feel they are too "magic"). The usual choice would be Java, but our team is expressing interest in the conciseness and flexibility provided by features of some of the other languages such as Python and Ruby.
Based on my team's interests, I need some help evaluating which language to use. Ideally, the language would support these features:
- Statically typed,
- Properties or some form of the Uniform Access Principle,
- First-class functions,
- Anonymous functions (less important).
Bonus points for languages that:
- Aren't dependent on Microsoft or any specific operating system.
- Have a non-JVM implementation.
- Have an ORM.
- Have a web development framework.
Apart from these criteria, I'd still love to know more reasons why to choose the language(s) in your answer, and any experience you've had with them. Hopefully the answers here will be useful to anyone else that wants to evaluate some alternatives to Java without blindly switching another popular language such as C#.
*Edit: My question was closed due to how poorly I communicated my question before. I hope that I have cleared things up since I got the question re-opened. By the way, I've put my own research into a community wiki answer below, so don't think I haven't done any homework. ;-)