4

I'm looking for a programming language (+ compiler obviously):

  • not Java;
  • programs must run on Android 2.1 ("API version 7");
  • open-source;
  • "more concise than Java" - I know this is soft requirement and somewhat subjective, so let's say this is optional;
    • (also here I'd prefer not brainfuck or other similarly "esoteric"; but e.g. Forth or something like that would be ok)
  • should produce not too big apps ("hello world" < 1MB);
  • must be able to build full GUI (i.e. Activities etc.) without any Java stubs/... - not one line of Java;
  • also, should really support multithreaded programming;
  • should be stable.

For now I tried Kawa; looked very good initially, but I seem to encounter some exceptions I can't really understand why; generally after some time I feel there's too much fighting with the compiler for me.

[edit] Tried Mirah+"Pindah" too, but it seems to have got defunct somewhere between Java 6 and 7; when building sample project with rake debug, in Java 6 I get error: "NameError: cannot link Java class mirah.impl.MirahParser, probable missing dependency: mirah/impl/MirahParser : Unsupported major.minor version 51.0", while in Java 7: "taskdef class org.mirah.ant.Compile cannot be found".

[edit] According to one blog post, Scala 2.11 is reportedly not compatible with Android API 8 and earlier, so I assume I can rule out Scala before even trying.

[edit] Pending research for the following:
HolonJ Forth -- seems to target JVM 1.2, so not sure if not too old;
Bigloo Scheme -- but Windows builds of the compiler seem to lag ~2 years, so I'd have to try building in MSYS;
...todo: moar from the Wikipedia list: Ceylon? Joy? Fantom?...

  • Why can't you use Java? – Milo Aug 31 '14 at 9:38
  • What about using C++ in conjunction with the native development kit (NDK)? – ComFreek Aug 31 '14 at 9:54
  • @ComFreek AFAIK, with NDK I can't use GUI and I have to write a Java stub for each Activity, isn't that true? Also, I believe the NDK API is severely limited, no? – akavel Aug 31 '14 at 12:32
  • @Milo I can't force myself to continue working on certain project I started in Java. I want to try completing it, but I need some way to reduce frustration level. – akavel Aug 31 '14 at 12:42
  • @akavel It seems that you are indeed limited as long as you don't create a bridge to Java. See stackoverflow.com/questions/10583713/… and codeproject.com/Articles/396538/… – ComFreek Sep 1 '14 at 8:46
2

Yeti is ML style functional programming language.

  • I verified it builds for and runs on Android 2.1 emulator;
  • open-source, BSD-licensed;
  • ML-family language, so I expect it to be more concise than Java;
  • entire yeti.jar is ~570KB;
  • can emit Java classes extending others (thus Android Activities too), so can build Android GUI;
  • no idea about multithreading for now.
  • As of now, this feels fun! And, to my surprise, I feel like quietly cheating on Java... And it already helped me push the app forward, so it's only right to call Yeti the winner! at least for now. – akavel Sep 3 '14 at 6:41
1

So, at the time of writing (09.2014), Kotlin seems a viable alternative.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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