Hack vs Imba vs Kotlin

Need advice about which tool to choose?Ask the StackShare community!

Hack

161
131
+ 1
28
Imba

14
31
+ 1
0
Kotlin

8.2K
6.2K
+ 1
508
Advice on Hack, Imba, and Kotlin
Needs advice
on
Rust
Kotlin
and
Java

I was thinking about adding a new technology to my current stack (Ruby and JavaScript). But, I want a compiled language, mainly for speed and scalability reasons compared to interpreted languages. I have tried each one (Rust, Java, and Kotlin). I loved them, and I don't know which one can offer me more opportunities for the future (I'm in my first year of software engineering at university).

Which language should I choose?

See more
Replies (8)
Recommends
Kotlin
Java

I will highly recommend Kotlin. I have worked with all three intensely and so far the development speed and simplicity is the best with Kotlin. Kotlin supports coroutines out of the box. Now, it isn't something that can't be implemented in other languages but Kotlin makes it super easy to work with them. Kotlin has a bit of learning curve, so, by the time you can actually use it idiomatically chances are that you will get proficient in Java too. But once you get it, you get it, then there is no other language ;) Kotlin is backed by Google and Jetbrains team so you can expect latest programming features and good community support.

See more
Recommends
Rust

If you want a compiled language then go for Rust. It takes a certain mindset to get your head around its memory management system and the way it handles "borrowed" memory. However, it will generate blindingly fast code that you can cross-compile for other platforms. As a systems programming language I highly recommend it. Take time and learn it.

Java is only compiled to bytecode, not to machine code. So it executes in the Java Virtual Machine. DOn't think that its not fast, because the latest incarnation are very fast indeed. For most practical purposes, users of your code won't notice any difference. There are a heck of a lot of features in Java that you either have to import via crates in Rust, or write yoursef. So productivity-wise, Java may well beat Rust.

Kotlin is a Java-lookalike. It's a nice, and succinct version of Java and is totally interoperable. But its a bit niche, and for me it fails because my dev environment of choice (Spring Tool Suite) doesn't really play well with Kotlin. To use it you would be well advised to use iDeaj. I have used kotlin, and I like it, but not enough to ditch all my Java code.

Other contenders, depending on your platform of choice are Golang, C, C++, and C# (available as Mono on Linux systems).

I use Rust and Java and if you need a compiled language I recommend Rust.

See more
malekmfs
at Meam Software Engineering Group · | 4 upvotes · 51.4K views
Recommends
Rust
Ruby
Kotlin

It depends on which level and use cases you prefer to work at. Close to the machine? Rust is great but if you need to find more job opportunities, then take C/C++. Java has many job positions but I suggest Kotlin over it. Think about it as a better Java, but fewer job positions. Do you want to do your own projects? So a productive language like Ruby is way better. Like to program front-end apps? Take JS. Find your passion.

See more
Mayur Borse
Software Engineer at hyphenOs · | 4 upvotes · 59.8K views
Recommends
Rust

I'd say Rust's knowledge will be more valuable in comparison. You can work in Blockchain development, compile to WASM (WebAssembly). There is a new JavaScript/TypeScript runtime named Deno (by the creator of Node.js) that has its backend in Rust.

See more
ALESSIO SALTARIN
Master IT Architect at IBM · | 4 upvotes · 59.6K views
Recommends
Go

As you certainly know, there are languages that compile in meta-code for Virtual Machines (Java, C#, Kotlin) and languages that compile in Machine Language (Go, Rust). Apart specific domains (blockchain, IoT embedded software, AI, cloud) almost no-one uses languages that compile in machine language, for a series of reason, most of all security and portability. So, if you are going to learn for business go with Kotlin - Java is a bit ancien regime. If you seriously need to learn a language that compiles in ML - for example you will code for IoT - go with Go - or Rust - but keep in mind that Rust is much less used than Go. PS: Kotlin also compiles in ML, but I would choose a language designed for that, instead of one that compiles "also" in ML. PPS: Some Virtual Machines - ie: GraalVM - allow you to compile Java in ML. The world of IT is beautiful.

See more
Radu Maerza
Software Engineer at Freelancer · | 3 upvotes · 53K views
Recommends
Kotlin

I would go with Kotlin. It is pretty hyped currently.

You can use Kotlin for a lot of application types. To name some:

  • Kotlin Multiplatform with Gradle
  • Ktor (https://ktor.io)
  • Spring Boot
  • Kotlin JS (as you already know Javascript, you might like this one)

The code is also really concise, readable and modern. It also provides many features that you will find in many other programming languages.

See more
Alexander Nozik
Senior researcher at MIPT · | 3 upvotes · 52.9K views
Recommends
Kotlin

All those are nice languages, but Rust is harder to learn properly and has a smaller ecosystem. If you want to work in system programming (like hardware drivers) Rust is probably your choice. Otherwise, Java/Kotlin ecosystem is much larger and gives much more possibilities (maybe excluding low-level system programming).

When talking about Kotlin and Java, both are good. But Kotlin, again, gives much more opportunities. Kotlin-JS gives you browser applications, Kotlin-Native allows to compile to native application (and interop with them). Kotlin-WASM will be available shortly. Rust is better than Kotlin-Native for native development tight now, but not by far and it makes sense only if you are focusing only on native development.

See more
Luiz H. Rapatão
Senior Software Engineer at rapatao.com · | 3 upvotes · 52.8K views
Recommends
Kotlin
Java

I'd recommend you to take a look at Java and Kotlin, the first due to the number of companies that actively use it in your products. Kotlin is gaining adept since it is fully compatibly with the Java ecosystem but usually requires less code to do the same (ignoring other benefits of the language). Another benefits of the Kotlin is that it is in fact multiplatform, where you could use the same syntax to code for mobile, web and backend applications. The drawback of Kotlin, is the number of open jobs that exists currently compared to Java, but I pretty sure that it will change in the near future.

See more
Needs advice
on
Kotlin
F#
and
C#

Hi there. I want to expand my coding toolset. So I want to learn a second backend language besides Kotlin. Kotlin is fantastic. I love it in every aspect, and I think I can never return to Java. And also why should I? It is 100% interoperable with java and can co-exist in every project.

So my question here is. Which language do you think will bring me more joy? I think F#; it is more like Kotlin. Then C# (it's more or like 100% java). But, let's say I learn F#. Is it 100% interoperable like Kotlin? can they live side by side? Can I, then, apply to .NET jr jobs after a while, for example, or is C# the holy cow? I would like to learn .Net.

If it is the worst and only C# is acceptable, then which language should I learn? Dart? Go?

See more
Replies (3)
Recommends
Kotlin
C#

Exceptional decision to go with Kotlin. For the other story, go full with C#. "is C# the holy cow? Yes it is.". Specially now when netCore is crossplatform and you can build asp.net core applications on Windows, Linux and macOS via Visual Studio Code which is also multiplatform. Nothing will beat C# in the near future. Also, at the end of 2021 Microsoft will release Net 6.0 which will include MAUI.

"For those new to .NET MAUI (standing for .NET Multi-platform App UI), Microsoft says it's "the evolution of Xamarin.Forms extended from mobile to desktop scenarios with UI controls rebuilt from the ground up for performance and extensibility."

So, C# all the way sire!

See more
Recommends
C#

animefanx1,

First let's get your questions sorted: Which language do you think will bring me more joy?

This you will have to decide for yourself, I am a long time C# developer and have seen it grow into a very compelling platform. The language and I'd compare it more to Kotlin than Java (by a long margin). More on .NET in a bit.

say I learn F#. Is it 100% interoperable like Kotlin?

You can have 100% interop with a caveat, your F# libraries have to implement certain guidance in order to be referenced from C#. Some (dare I say most) of the differences between F# and C# are predicated on language constructs that are not available in C#. For instance F# functions that return Unit.

can they live side by side?

Yes.

Can I, then, apply to .NET jr jobs after a while, for example, or is C# the holy cow?

I don't know if I take your meaning, but let me say this: Learning either C# or F# will likely force you to understand concepts such as garbage collection, primitive types, etc. which apply to all .NET languages, thus a lot of the effort you put into .NET is bound to pay off regardless of your choice.

If it is the worst and only C# is acceptable, then which language should I learn? Dart? Go? You can't go wrong with any of these and I venture to say whether you select C#, F#, Dart or Go as your next adventure, your willingness to learn will take you to try other languages, some which mey not even exist yet!

PS1: .NET is an end to end environment now. With the introduction of Blazor and Razor pages one does not need JavaScript or other browser scripting languages, it even interops with JavaScript. PS2. Microsoft is working on unifying .NET. Soon there will be only one version: .NET 5! Caveat: Some features such as WinForms will still be specific to the windows environment but all of those are likely things you don't need in Mac or Linux

See more
Recommends
Go

I think you can learn go instead C#. C# is cool, but Golang also cool. It can run on any OS without specific software. C# can run on linux too but it's only the .NET Core as I know. But golang is flexible. So try it and decide what do you think about Golang

See more
Needs advice
on
Kotlin
and
Dart

Can anyone help me decide what's best for app development or even android Oreo development? I'm in a state dilemma at the moment. I want to do Android programming, not necessarily web development. I have heard a lot of people recommend one of these, and it seems that both the tools can do the job. Which language would you choose?

See more
Replies (4)
Ondrej Malek
Recommends
Dart

I assume that you mean Flutter by Dart. I have over 6 years experience programming in Android SDK, but about 1,5 month in Flutter. So far I think that Flutter is the future for mobile development. Flutter SDK is much better designed. Ecosystem of libraries seems having much higher quality. I would even say that android opensource libs are having really poor quality. Many times I am wondering how can garbage like that have so many stars at GitHub. Android SDK is hard to compose so you reinvent even basic things on and on, which is totally different story at Flutter. Lolcycle? Both are having good documentation. I quess apps in Flutter can be done in 1/3 of time compared to develop AndroidSDK and iOS, its design is that much better and contemporary. As of language comparison - Kotlin is better, but the difference is not that important. Go from one language to other is no problem. Dart is being updated with new features.

See more
Recommends
Dart

I've selected Flutter and Dart for my side projects and never regretted. Dart learning curve is easy after any OOP language . Flutter as a framework is also has a low entry threshold. I've already started development after a week of learning. Pros for me: code can be build for Android and IOS devices (for ios you need mac or VM), apps written in Dart have great performance on each of these platforms, flexibility. Cons: if you want to build a product as a business and want to hire a new Flutter Developer in the future it can be a problem as the framework and language is not popular for the moment.

See more
Tran Phuc
CTO at Nextfunc Co., Ltd · | 3 upvotes · 97.2K views
Recommends
Dart

I have worked in mobile development since 2010. I have experienced myself on various techs including Native SDK (Android), React Native (from 2016) and Flutter (2018). Almost the apps nowadays can be built using cross-platforms frameworks like React Native or Flutter. I suggest you start with Flutter. Flutter SDK is designed well to speed up your development and it still keeps the quality for your apps. If you're familiar with OOP languages (Java, C#...), switching to Dart is really quick and easy. Of course, sometimes you will need to dive deep into native parts but almost the cases you don't need. Good luck!

See more
Ranjeet Sinha
Senior Software Engineer · | 3 upvotes · 97.2K views
Recommends
Kotlin

It depends on what is the purpose of your app development. Do you want to make one app that shares the codebase for both iOS and Android? If yes, then Dart is the way to go. Does your app include interacting with hardware features like camera, Bluetooth, if yes, then go for native Android for better performance? Dart is good for simpler UI apps where you just do basic crud operations over the network and show data but if you need richer UI experience go with native.

See more
Decisions about Hack, Imba, and Kotlin
Alexander Nozik
Senior researcher at MIPT · | 3 upvotes · 55.6K views
Migrated
from
Julia
to
Kotlin

After writing a project in Julia we decided to stick with Kotlin. Julia is a nice language and has superb REPL support, but poor tooling and the lack of reproducibility of the program runs makes it too expensive to work with. Kotlin on the other hand now has nice Jupyter support, which mostly covers REPL requirements.

See more
Alaa Alzaibak
iOS Developer at Volt Lines · | 1 upvote · 69.7K views

From cross platform development point of view: Using kotlin multiplatform is more convenient than java for implementing cross platform code, since it can be converted to be used in iOS (swift) projects, and it can be easily learned if you already know swift. It still an experimental feature but it helped so far to unify a lot of the common code between our iOS and Android projects. And it is more future proof than java regarding support and maintain multiplatform converting.

See more
Nick Parsons
Director of Developer Marketing at Stream · | 11 upvotes · 44.8K views

I work at Stream and I'm immensely proud of what our team is working on here at the company. Most recently, we announced our Android SDK accompanied by an extensive tutorial for Java and Kotlin. The tutorial covers just about everything you need to know when it comes to using our Android SDK for Stream Chat. The Android SDK touches many features offered by Stream Chat – more specifically, typing status, read state, file uploads, threads, reactions, editing messages, and commands. Head over to https://getstream.io/tutorials/android-chat/ and give it a whirl!

See more
Get Advice from developers at your company using Private StackShare. Sign up for Private StackShare.
Learn More
Pros of Hack
Pros of Imba
Pros of Kotlin
  • 6
    Open source
  • 6
    Interoperates seamlessly with php
  • 5
    Backed by facebook
  • 4
    HHVM
  • 2
    Great documentation
  • 2
    Generics
  • 2
    PHP like
  • 1
    Used by facebook
  • 0
    Great type system
  • 0
    Fast
  • 0
    Easy to learn
    Be the first to leave a pro
    • 63
      Interoperable with Java
    • 48
      Functional Programming support
    • 43
      Null Safety
    • 39
      Backed by JetBrains
    • 38
      Official Android support
    • 30
      Concise
    • 29
      Modern Multiplatform Applications
    • 24
      Expressive Syntax
    • 22
      Coroutines
    • 21
      Target to JVM
    • 20
      Open Source
    • 15
      Practical elegance
    • 14
      Type Inference
    • 14
      Statically Typed
    • 13
      Android support
    • 9
      Pragmatic
    • 9
      Better Java
    • 9
      Readable code
    • 8
      Powerful as Scala, simple as Python, plus coroutines <3
    • 6
      Better language for android
    • 6
      Lambda
    • 6
      Expressive DSLs
    • 5
      Target to JavaScript
    • 4
      Less boilerplate code
    • 3
      Used for Android
    • 3
      Fast Programming language
    • 2
      Functional Programming Language
    • 2
      Less code
    • 1
      Latest version of Java
    • 1
      Friendly community
    • 1
      Less boiler plate code

    Sign up to add or upvote prosMake informed product decisions

    Cons of Hack
    Cons of Imba
    Cons of Kotlin
      Be the first to leave a con
        Be the first to leave a con
        • 5
          Java interop makes users write Java in Kotlin
        • 4
          Frequent use of {} keys
        • 2
          Hard to make teams adopt the Kotlin style
        • 2
          Nonullpointer Exception
        • 1
          Friendly community
        • 1
          No boiler plate code

        Sign up to add or upvote consMake informed product decisions

        What is Hack?

        Hack provides instantaneous type checking via a local server that watches the filesystem. It typically runs in less than 200 milliseconds, making it easy to integrate into your development workflow without introducing a noticeable delay.

        What is Imba?

        Imba is a new programming language for the web that compiles to performant and readable JavaScript. It has language level support for defining, extending, subclassing, instantiating and rendering dom nodes.

        What is Kotlin?

        Kotlin is a statically typed programming language for the JVM, Android and the browser, 100% interoperable with Java

        Need advice about which tool to choose?Ask the StackShare community!

        What companies use Hack?
        What companies use Imba?
        What companies use Kotlin?
          No companies found

          Sign up to get full access to all the companiesMake informed product decisions

          What tools integrate with Hack?
          What tools integrate with Imba?
          What tools integrate with Kotlin?

          Sign up to get full access to all the tool integrationsMake informed product decisions

          Blog Posts

          +47
          47
          69079
          What are some alternatives to Hack, Imba, and Kotlin?
          PHP
          Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world.
          JavaScript
          JavaScript is most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB. It is a prototype-based, multi-paradigm scripting language that is dynamic,and supports object-oriented, imperative, and functional programming styles.
          Python
          Python is a general purpose programming language created by Guido Van Rossum. Python is most praised for its elegant syntax and readable code, if you are just beginning your programming career python suits you best.
          HTML5
          HTML5 is a core technology markup language of the Internet used for structuring and presenting content for the World Wide Web. As of October 2014 this is the final and complete fifth revision of the HTML standard of the World Wide Web Consortium (W3C). The previous version, HTML 4, was standardised in 1997.
          Java
          Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere!
          See all alternatives