Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

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
  • delegates
  • lambda expressions
  • anonymous types
  • generators (iterator blocks/yield return)
  • non-checked exceptions
  • initializers
  • 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?

I think this may be the first question here about Stab. Ceylon already has questions and nobody has even seen it yet.

share|improve this question

migrated from Apr 17 '11 at 5:32

This question came from our site for professional and enthusiast programmers.

closed as not constructive by back2dos, Walter, Thomas Owens, ChrisF Jan 30 '12 at 22:00

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Probably for some of the same reasons Nemerle is not widely used, even though it adds advanced metaprogramming and other functional programming features to a language largely compatible with C#. Never heard of Nemerle? I didn't think so. – Robert Harvey Apr 17 '11 at 5:43
Has whoever is responsible for Stab ever done anything to promote the language? The fact that this question is now the #4 Google hit for "Stab language" suggests that maybe they have not. – Carson63000 Apr 17 '11 at 5:48
There already is a Stab language and it's called C#. – davidk01 Apr 17 '11 at 8:03
Maybe precisely because the conceptual jump from Java to Stab is not so big, programmers might think it's not worth the effort, and stay within their comfort zone? – Andres F. Jan 26 '12 at 12:37
I don't know that you'll find any technical reasons. A large part may simply be the name. It's really a poor name for a programming language. Has too many negative connotations. Combine that with a lack of marketing and you've got an instant failure. – Brian Knoblauch Jan 26 '12 at 13:02

2 Answers 2

The success of languages is only partly related to its technical superiority.

A critical factor when choosing a language is the number of other people already using the language. There are several reasons to this.

  1. Rumor: If it works well for thousands of other people it is probably to you too.
  2. Jobs/employments: There is a large job market for the large languages. As a C# or Java developer you have lots of jobs in your vicinity to choose from. As a company you can easily find more developers to your project if you use a mainstream language. Can you tell me where I can grab a handful of stab developers when I need to ramp up my project?
  3. Help: There are currently 114,443 questions about Java on StackOverflow and 20.9k people following the Java tag. Stab has one question and 0 followers. If you get stuck, which language will maximize your chances of getting help fast and cheap?
  4. Industry support: As a C# or Java developer you have a clear future path, you can expect the language and surrounding libraries to evolve to be able to handle future programming styles.
  5. Components: Both Java and C# has a large eco-system built around the languages. Large build in libraries and third party controls and libraries.

Point 5 might not be valid to stab at, but most of the other points are.

share|improve this answer
Similar to .NET, most JVM languages support loading in precompiled modules written in other languages I believe, though its not always the nicest experience as those modules may have odd naming and follow different conventions to what your target language uses. – Matthew Scharley Apr 17 '11 at 6:50
I realize these but my question was specifically about 'technical' reasons. Plus, part of why I would expect Stab to be more popular is because it minimises so many of these. Stab uses the Java libraries as they are in the context in which they were intended. Stab features are pretty much a pure superset of Java. Java programmers have very little syntax and very few concepts to grok to learn Stab. The toughest concepts (like lambda expressions) are well described in many C# materials that are readily available. Your points make it more likely that a language like Stab would get chosen – Justin Apr 17 '11 at 20:20

A C#-like language in an environment without .net-like APIs? In the Java world, most programmers use lots of libs and frameworks. Spring, Struts, JSF, countless others. New language features are not that useful if those libs and frameworks do not support them.

For example, it's nice to have delegates, but the Swing API doesn't make any use of them, for obvious reasons. Unless a language allows for a radically different approach to programming, like Scala or Groovy, it's probably not worth the hassle.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.