8 ms·
I also dropped Clojure/ClojureScript, even though it was my favorite language between 2012 and 2014/2015. The main reason for me is the progression of Java and
by megalomanu 10y ago
I also dropped Clojure/ClojureScript, even though it was my favorite language between 2012 and 2014/2015.
The main reason for me is the progression of Java and JavaScript during these years, which make ClojureScript less useful. ES6 has completely transformed the JavaScript development. I finally enjoy to code in JavaScript - this wasn't the case before. On the contrary, coding in ClojureScript became painful. It's difficult to follow the recent trends, to integrate new libraries without hassle. Currently I work on a project that use DraftJS. I don't want to know how to integrate it in ClojureScript ! It's a waste of time, and again the "joy of Clojure" still exists but is now less superior to the "joy of Javascript".
On the Clojure/JVM side, Java 8 is far from perfect but the lambdas expressions have made the language a bit less boring. I think many developer feel less the urge to leave Java for an alternative language. And if they really want it, there is Scala, still the best strong statically typed language on the JVM, and so, for me, still the best language for backend development.
In short, Clojure/ClojureScript was for me the best language for rapid prototyping and for front development. I've never really considered it for "serious" backend applications based on a complex data models, because of its dynamic typing. However, JavaScript development became much more pleasant, making ClojureScript less attractive, less differentiating. I believe that today, you have to be a true Clojure fan to code in ClojureScript.
- BigPicture4TW 10y agoScala is a fine backend language, with far more bells-and-whistles than Java 8. However the comparison beyond language features is very much relevant, including the lack of Android support in Scala 2.12 Adding to the woes, the code emitted by 2.12 is slower ( https://news.ycombinator.com/item?id=12066653 https://news.ycombinator.com/item?id=12066653 ) Not to say things can't improve. After the initial announcement of 2.12 at ScalaDays 2015 and 2016, expect more at ScalaDays 2017.
- pjmlp 10y agoThe Android team did a AMA on Reddit this week, they were pretty clear that regardless of people wishes only Java, C and C++ matter on Android. Anything else it is up to the respective language communities to make it work. Right now only Kotlin seems to be improving their Android support, but that is because JetBrains needs a killer application for it, which appears to be improving the world of those stuck in Java 6.
- hellofunk 10y agoI've heard that Swift is getting serious attention from the Android team as a first-class language there.
- pjmlp 10y agoNot at all. That is just rumours. They were very clear at the AMA: "Anwar: Nope, not happening." "Anwar: We don’t have any plans to officially support a new language in Android, so we’d encourage folks to continue to use Java:) That said, you should continue to use what works for you." https://www.reddit.com/r/androiddev/comments/4tm8i6/were_on_the_android_engineering_team_and_built/ https://www.reddit.com/r/androiddev/comments/4tm8i6/were_on_... People have to get over the fact that regardless of what happens in the Oracle vs Sun, the Android team which has a quite a few Sun alumnis, doesn't want to use anything else. Even the NDK is designed in a way that native C and C++ code is always exposed via Java native. The example code on the NDK start page is pretty clear how they see the NDK. https://developer.android.com/ndk/index.html https://developer.android.com/ndk/index.html "The Android NDK is a toolset that lets you implement parts of your app using native-code languages such as C and C++. For certain types of apps, this can help you reuse code libraries written in those languages." And another fun fact is that given the NDK constraints, having Linux as kernel doesn't matter that much, they could change to something else and only OEMs would notice.
- pjmlp 10y agoOops I meant Oracle vs Google, cannot edit it anymore.
- hellofunk 10y agoArticles like this certainly don't help spread false rumors: http://thenextweb.com/dd/2016/04/07/google-facebook-uber-swift/ http://thenextweb.com/dd/2016/04/07/google-facebook-uber-swi...
- pjmlp 10y agoRight now the only big name betting on Swift outside Apple for other OSes is IBM. Even Microsoft is only improving the Objective-C support on their iOS bridge, in spite of the Swift support requests, at least for the time being. If you check Brillo, which is basically Android without the Java layer, their plans are to create a C++ Frameworks layer not Swift and not Go.
- lmm 10y agoI don't understand why Scala would drop the Java 6 backend. Surely Android is a big enough "market" to be worth maintaining it as a compilation target? Particularly now that Scala is expanding to be very clearly multi-backend (ScalaJS as first class, Scala Native starting up).
- bdavisx 10y agoPerhaps they dropped it because Scala is driven more by academics who didn't take that into account (or did and dismissed it).
- kod 10y agoOr perhaps they dropped it because Java 6 was end-of-life 3 years ago.
- bdavisx 10y agoYes, but from a "business" standpoint, Java 6 hasn't EOL'd. If your business needs to build Android applications, it doesn't matter that it's technically EOL'd. I would guess there's probably quite a few VB6 applications out there in business-land, and it's been EOL'd since 2012 IIRC. Not that most people would want to deal with them, but they exist, just like Java 6 in Android.
- adriaanm 10y agoIn addition to being supported by the community, we (Lightbend) offer commercial support for Scala 2.11. If you're paying Oracle for Java 6 support beyond its EOL, perhaps you'd be willing to establish a commercial relationship with us as well? That said, the vast majority of our customers are eagerly upgrading to Java 8 (https://news.ycombinator.com/item?id=7346224 https://news.ycombinator.com/item?id=7346224, https://info.lightbend.com/COLL-2014-10-20-Java-8-II-Survey-Report-LP.html https://info.lightbend.com/COLL-2014-10-20-Java-8-II-Survey-...)
- GFK_of_xmaspast 10y ago
- adriaanm 10y agoThe code emitted by 2.12.0-M5 is slower in certain benchmarks, but I don't expect this to be the case for the final 2.12 release. We're working on the performance issue, with help from the team at Oracle. The problem is likely the JIT having trouble optimizing the bytecode we emit in M5 (we know of other schemes that don't suffer this slowdown, but require more bytecode).
- merb 10y ago> Adding to the woes, the code emitted by 2.12 is slower ( https://news.ycombinator.com/item?id=12066653 https://news.ycombinator.com/item?id=12066653 ) Read the article and you will notice that Scala 2.12-M5 will solve some of this slower code emittion. It's in the middle of your linked article.
- dietrichepp 10y agoThat's been my experience too, and people are also moving to TypeScript in fairly large numbers as a way to make JS development more predictable.
- Roboprog 10y agoActually, I'm hoping to avoid TypeScript. Its use in Angular 2 probably makes it inevitable, though. At the moment, still using ES 5 (for an Angular 1 app), as we have to support IE 11 and started the project a while back before Angular 2 shipped. I'm more interested in the functional-friendly features of ES 6 / 2016 (tail call elimination, gather/spread params & return values operations, etc) than I am in emulating Java with TypeScript. Also, I actually like JS, and would like to avoid a transpiler step.
- dietrichepp 10y agoTo clarify, I wasn't trying to convince you to use TypeScript, just saying that it's taking a larger share of the compile-to-JavaScript crowd, along with ES2015, both competing with ClojureScript. I would like to clear something up, though. TypeScript is not very much like Java, in my experience. To me, it feels like programming in JavaScript but with type annotations where you want them. If you think that TypeScript will make programming like Java, I'd encourage you to at least reevaluate that position.