haXe (pronounced as hex) is an open source programming language. While most other languages are bound to their own platform (Java to the JVM, C# to .Net, ActionScript to the Flash Player), haXe is a multiplatform language.
It means that you can use haXe to target the following platforms :
Flash : You can compile a haXe program to a .swf file. haXe is compatible with Flash Players 6 to 10, with either "old" Flash 8 API or newest AS3/Flash9+ API. haXe offers very good performance and language features to develop Flash content.
NekoVM : You can compile a haXe program to NekoVM bytecode. This can be used for server-side programming such as dynamic webpages (using mod_neko for Apache) and also for command-line or desktop applications, since NekoVM can be embedded and extended with some other DLL.
PHP : You can compile a haXe program to .php files. This will enable you to use a high level strictly-typed language such as haXe while keeping full compatibility with your existing server platform and libraries.
C++ : You can now generate C++ code from your haXe source code, with the required Makefiles. This is very useful for creating native applications, for instance in iPhone development.
C# and Java targets are coming soon! (from @cwaneck)
The idea behind haXe is to let the developer choose the best platform for a given job. In general, this is not easy to do, because every new platform comes with its own programming language. What haXe provides you with is:
a standardized language with many good features
a standard library (including Date, Xml, Math...) that works the same on all platforms
platform-specific libraries : the full APIs for a given platform are accessible from haXe
Â· The haXe Type System is strictly typed, enabling the compiler to detect most errors at compile-time. At the same time, it's very different from classic strictly typed languages since you don't have to write types everywhere in your program, thanks to type inference. It makes you feel like you are programming in a dynamically typed language while you are getting the security of a strictly typed language. The best of both worlds
Â· The haXe Standard Library, including Date, XML, data structures... is specified to behave the same across all platforms. This enables you to share and reuse code logic between different platforms without needing to rewrite the same thing again and again
Â· haXe is easily Extensible : you can add additional libraries and wrappers for platform-specific features. Thanks to conditional compilation you can have different implementation for a given API depending on the platform you want to compile to
Â· haXe has a Remoting library that provides cross platform serialization and RPC, enabling you to directly call methods between platforms. For example calls may be made between the client and the server or between different client modules. Everything is handled transparently
Â· haXe can be used to develop portable Desktop applications by using SWHX