I am wondering if there are technical reasons that make Stab an unsuitable alternative to Java.
Stab borrows heavily from C#, bringing many C# features to the JVM:
- Less verbosity
- type inference (implicit typing)
- properties and indexers
- null coalescing operator
- 'using' and 'as' shortcuts
- lambda expressions
- anonymous types
- generators (iterator blocks/yield return)
- non-checked exceptions
- partial classes and methods
- extension methods
- a form of LINQ
- other stuff
Many of the above features seem like things that people are clamouring for in Java. Stab seems like a way of getting these features today while not falling very far from the Java tree.
I am surprised that Stab has not been more popular with C# developers that also have to write and maintain code on the JVM. Stab is not 100% the same as C# but it is pretty close and I would think that C# developers would prefer coding in Stab to coding in Java.
I am surprised that Stab has not seen greater adoption with Java programmers. It has a syntax that is very similar and incremental to Java, uses the plain vanilla JDK, and generates libraries that interact very naturally with Java on the JVM.
Scala is an obvious alternative as well and has an even greater feature set. I can see why you would choose Scala. In my opinion, Scala is a bigger jump conceptually, syntax-wise, and even in terms of libraries for both Java and C# programmers. Even in a world with Scala as a choice, I am surprised that Stab has not seen more traction.
It seems like there could be a few reasons:
- People are just not aware of it
- Java folks do not like the 'Microsoft' influence
- These features are not as compelling as I imagine compared to vanilla Java
- There are technical issues with using Stab in the real world
The last option seems most suitable for discussion here. So, what are the technical reasons that keep Stab from being a popular choice when developing on the JVM?