Kotlin 1.0 Released
Qbertino writes: Kotlin, one of the challengers to Java's VM, has been released in version 1. Kotlin is object-oriented, statically typed and comes with professional IDE support by Jetbrains — which is no big surprise, since it's the Jetbrains employees who developed the programming language that saw the light of day four years ago. Kotlin is already in real-world use and development will be moving into fleshing out the Kotlin feature set without breaking backwards compatibility. These features include planned support for JavaScript — which sounds interesting considering JS has gained quite some traction recently. Kotlin is FOSS and is released under the Apache license.
According to its webpage, this is a JVM-based language.
Provide an actual working installer, instead of that Sun invented piece of misnamed, misplaced piece of camel dung instlaler. First you have the magicalliy renumbering component versions, then the "you have to formally sign a user agreement" to instlal it, then for RHEL and CentOS and Fedora and SuSE users you get misnamed "rpm.bin" piece of sticky doggy mess that violates the File System Hierarchy and whose RPM package name does not match the name of the RPM file.
There are reasons some of us gave up on using anything from Sun, and it's sad to see Oracle continued the same stupid practices. If these Java variant exert the slightest care in packaging, they can pick up a few clients right there.
does it run Java? ... Why not either invent a language or a VM?
The Java VM can run a couple dozen languages, including Javascript, Ruby, Python
Inventing a language is stupid if you don't take advantage of existing libraries -- in particular for Java.
NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
Which is it? The summary makes it sound like Kotlin has its own VM (JVM compatible I'd assume) to compete with Oracle's JVM. The web page makes it sound like Kotlin is just a language that compiles to the JVM's bytecode. Which is it? Or is it a both?
Kotlin is yet another language to be run in the JVM. It is not a competitor to the JVM as the description suggests.
All the new JVM based languages that are popping up are just syntactic sugar on top of Java. The real concepts can't be shaken, as the JVM is pretty much limited in what it can do and what it can't.
Telling from the examples, Kotlin seems to be a good example: Yet another poor copy of Java with some "obsolete" things like the semicolon removed (why is there so much hate for it?), and you write "fun" instead of "function". So what. I don't think this makes me more productive than Java. Its just for all the people who keep preaching "java is shit" because they've heard it somewhere and now they want to use a "much better" language.
If Kotlin suits, Java is fine for the job as well, and most likely its even better.
Jython is a non-starter because it is stuck on Python 2.5 compatibility.
JRuby, Scala and Clojure are still growing.
Just because you are ignorant of them it doesn't mean they are dead.
I took a quick look at it and - while I kinda get the appeal - it just seems to me to be too much variation from standard coding practices and, as someone who spent way too much time deciphering kabuki-like single line C statements that should have been a proper function, I'm not a big fan of shortness for the sake of shortness. I personally have found that standard JPA and Java, with much help from OpenXava, is the best combination of ease-of-development and flexibility for my app needs. But, that's just one man's opinion...
why we can't use C++ and C++ style derivatives for compiled code (cross compiled to many platforms), and then for interpreted needs use javascript, python, or whatever floats your boat on top?
There's some interesting languages out there with other features. Haskell comes to mind, as a pure functional language. It's not just pretty syntax, but a different way of thought that provides some features and power that C++/Java style imperative languages can't match. They're so different that you need different compilers really. You can't always write a Haskell program and "translate" it to C++, certainly not without re-architecting. Of course, there may be things an object oriented style is better suited for too, but just pointing out that some languages have different paradigms and therefore contribute new ideas to software development. That sort of exploration and research I think is important. I don't think we should be so quick to assume Java/C++/Python/whatever is the only language that is ever needed (which maybe is not what you meant, so I don't mean to attack you comment, just writing a thought that popped in mind based on yours).
A large amount of the languages these days seem to be more "domain-specific", that is, not very different from some underlying language, just adding some syntactic sugar for some specific problem or complaint while ignoring other drawbacks. I suppose that iteration is good though, as its catching the most important -- and serious? -- errors and making it easier to avoid those problems. 'm partial to investigating totally new concepts to see if we can build more resilient and secure software than to keep iterating what is already known to have drawbacks, but it's probably good that we do research from both ends -- incrementally improve what we have to take away certain known bugs and get it out the door *now*, while researching new ideas that perhaps will do away with whole classes of bugs for good (as well as make more powerful software in general).
^^^ Damn, you beat me to it!
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
Huh?
In OpenSuse using the binary from Oracle gives no issues. It installs in usr/bin/java and unlike Windows, I never need to change JAVA_HOME because there are softlinks in usr/java/latest to the most recent java version, so I never have to futz with update_alternatives unless I need an older version, which I never do.
I am not sure what weird thing you are doing to get the behavior you describe but that is not the case with any version of opensuse I have ever used and I have used every version from 9.x to Leap 42.1.
Formally sign a user agreement? You mean clicking a checkbox on the download page? I am not sure that qualifies as formally signing anything.
I'm more into numerical modeling and such, and I agree IDE's need a lot of resources, but what's wrong with an IDE checking your variable consistency, object exposure, and having a debugger that makes it easy to see your values without writing print files?
"Who are you?" "No one of consequence." "I must know." "Get used to disappointment."
The best XML IDE on the planet is written in Java.
(And, no, I don't work for them; I've just been using their product on a daily basis for nearly ten years.)
Il n'y a pas de Planet B.
Red Hat managed to spend five years on Ceylon, a JVM language almost nobody wants to use.
Great to see a sane alternative gaining traction.
Everyone knows they should have named it Cylon - the Cylons had a plan for universal domination. Ceylon was deprecated for Sri Lanka.
But no, Kotlan is not a sane alternative and it's not gaining traction.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
The best XML IDE on the planet is written in Java.
(And, no, I don't work for them; I've just been using their product on a daily basis for nearly ten years.)
That's kind of like saying "The best dog poop comes from $WHO_GIVES_A_SHIT." :-) xml was a big mistake we will always be paying for.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
Its syntax is Java like in its lack of expressiveness and verbosity. What is the point when Scala, Clojure and JRuby are all more expressive and much more mature?
Good summary, AC. Which is why I'm quoting it and putting my name to the sentiment ;-) Kotlin seems to be slightly less verbose than straight Java, but not more semantically expressive in any meaningful way. I'd call it a worthless experiment doomed to failure because it simply does not offer enough to make it worthwhile.
> Problem is, most people need code completion, etc. to hold their hand. If c programmers needed that level of support, they'd be told to go back to school and really learn the language.
You are either missing the point of introspection or are like the mighty caveman telling people they don't need a roof. Both kinds of ignorance are controlled for in the market and by genetics. SMH
How can you be so wrong?! It tells you exactly what it is on the page you linked: an alternative to Java that runs on the JVM. Why "assume" things when you can just spend two minutes reading about it/
Don't need it, it makes things faster and mistakes less likely. I know a variable is called height in a class called Rectangle, but why would I not have it basically type out int height = rectangle.height by me typing int height = rec, hitting enter then hitting enter again? That's just one feature, it has hundreds or thousands of small things that make developing faster. Why would you drive a car when you could just walk? Why would you drink water out of a tap when you could just go to a river? The answer is that it's easier and faster and if you don't recognise that it is YOU that needs to go back to school.
JetBrains also has a C/C++ IDE that does practically the same thing and I guarantee projects are finished faster with less mistakes using it.
You don't need introspection if you know what you're doing. Plenty of C/C++ programmers work without it and do quite well. The more you know what you're doing, the less likely you are to make a mistake. But keep on claiming that requiring hand-holding is somehow the hallmark of an experienced professional instead of training wheels.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
I believe that you excessively denigrate Java. But Oracle sure hasn't helped it much.
I expect that JRuby will only be successful until Ruby manages to successfully implement a reasonable parallel execution of threads.
Perhaps you are right about Scala and Clojure, but I don't know. I have my doubts about any VM that insists that the character type is 16 bits. 32 I could understand, and 8 I could understand, but 16 seems a historical relic that only made sense on machines with 16 bit registers.
I think we've pushed this "anyone can grow up to be president" thing too far.
But no, Kotlan is not a sane alternative and it's not gaining traction.
Kotlin is though.
If it acquires resources on instantiation like a duck, then its a shared_ptr<Duck>
I've been using Sun/Oracle Java on (open)SUSE since SuSE 9.something times. Never ran into any of the issues you describe. 'which java' always gives me '/usr/bin/java', and the provided symlinks to /$latest/ take care of the versioning issues.
Il n'y a pas de Planet B.
JRuby is Ruby implemented in Java. It uses Java threads. The difference between Java threads and JRuby threads is that you don't typically create an entire class for the thread to run it. You just create it and run it wherever.
It is the same syntax and usage as Ruby threads, but behind the scenes it is a Java thread that runs it.
Ruby still uses green threads, but it does support fork() on operating systems that support it, and that has zero bearing on JRuby.
Or am I missing a deeper point?
Yeah, I agree, the OP went a little too far, but only a little.
Scala uses the same byte sizes as Java but it doesn't have to.
Well, JRuby doesn't have a character type but an ascii string of 1 character is 1 byte and can go up to whatever size is needed to hold the codepoint, so it is not the JVM demanding that characters are 16 bits, it can obviously be worked around.
Java is about the easiest versioned software you can deploy with configuration management tools like Puppet.. unzip -d /anywhere/jdk_anyversion jdk_anyversion.zip
Optionally make a symlink to a default version.
Zip it up once, extract anywhere you want, as many versions as you need, totally location independent. Rinse and repeat for any OS.
Try deploying multiple versions of the Perl runtime, on multiple OS. See how far RPM and FHS takes you.
Professional developers often need to work with multiple languages. No developer needs to completely learn every language before using it; that would be very counter-productive and much of that knowledge would likely be lost in a couple of weeks. If I was supervising a developer that insisted on completely learning a new language before starting to use it at all, I'd tell them to take a hike.
And that doesn't even mention frameworks and third party libraries. I've been developing primarily in C# for 14 years and I still don't have the entire BCL memorized. Particularly frameworks I rarely use and new APIs I haven't gotten around to using.
All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
So says every C programmer, just after they commit another heartbleed to the repo...
java is doing just fine.
it's doing so fine that people are all the time trying to invent new stuff to write java.
world was created 5 seconds before this post as it is.
Do you develop using notepad, or do you use some sort of syntax hilighting and macro-enabled editor that you refuse to refer to as an IDE for some illogical reason?
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
concision != clarity. This is a common misperception.
If c programmers needed that level of support, they'd be told to go back to school and really learn the language.
Code completion is rather useful for libraries. It has obviously nothing to do with "language".
And I rather have my method calls autocompleted, especially when I also autocomplete arguments, than having the compiler give me 25 errors per file I worked on the last hour because I have a typo every where.
There are plenty of reasons why people use auto completion ... "not knowing the language" is very likely the least one.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
concision != clarity. This is a common misperception.
That's a good point in this context. What little I remember of Kotlin specifics, I'd say that its concision comes from reduction in useless boilerplate, and therefore contributes to clarity. But only very mildly. In order to be worth anything, a JVM language needs to be substantially different than Java, not mildly improved here and there...
Wow, you didn't read what the graph was, did you? It's the number of lines of code, not the adoption rate. Kotlin is going nowhere.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
You would expect a developer to become more proficient as time goes on (unless you're jumping from one language fad of the week to another, which is poor planning, and the supervisor should be fired, along with whoever hired them). Training wheel IDEs mitigate against developing said proficiency.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
Lame comeback. Is that all you've got?
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
gedit, gmake, and bash, with a few perl scripts to take care of versioning. That's not an ide. And no, I don't use macros or syntax highlighting.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
I wrote an extension for my company's bug tracker, Redmine. None of us knew Ruby, but we needed to write an extension for it. I got up to speed but I didn't need to learn the entire language, and didn't need to work with it for quite a long time after the work was completed. There was no need for me or anyone else in the company to "become more proficient as time goes on". And it wasn't some fad as you suggest. It was a legitimate professional need.
All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
There's not need to be condescending and patronizing. I did read the chart. Just didn't realize that by 'gaining traction you meant 'adoption rate', and that you were an expert despite the incorrect spelling of 'Kotlin'. I'm not sure what the adoption rate is, however, we've adopted Kotlin a few months back, and the experience has been a pleasant one. I place a high level of trust in Jetbrains, and have been a fan of their products for years.
If it acquires resources on instantiation like a duck, then its a shared_ptr<Duck>
Ruby's current threads cannot do concurrent operations. There's a "global interpreter lock", though I'm not sure that's the terminology they use. This is *the* JRuby advantage. And every program that implements things via Java underneath uses 16-bit characters for it's characters. And this *does* affect the strings.
When Java was designed CPUs had 16 bit registers, so a 16 bit character seemed to make sense. But they baked that definition into the language spec, which was a mistake. They've had plenty of chances to fix it but never seemed to care to do so. Currently there's a work-around using arrays of codepoints, but that's clumsy compared to any language that has a decent character implementation, whether it's based around utf-8 or utf-32. 16 bit characters combine the worst features of both.
FWIW, I often need to handle single characters from strings. In the languages that are based around 32 bit chars this is trivial. In the languages based around 8 bit chars this means using library routines, but if the language has implemented things well it's still easy, and it *does* save on memory. Java has library routines that presume 16 bit chars, and JRuby is implemented on top of that with all the inherent problems. (Ruby doesn't really handle unicode chars at all well, but there are decent libraries, and Ruby 2.1+, at least, handles the basics.)
For JRuby to handle characters well would require abandoning Java Strings. I'd really be surprised if they do that.
I think we've pushed this "anyone can grow up to be president" thing too far.
Come on, tell us how you REALLY feel ...
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
Jython is up to 2.7 http://www.jython.org/
Please tell my you are joking. When in Eclipse the Java is incrementally recompiled WHILE YOU ARE TYPING. It is not FAST, it is INSTANTANEOUS.
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
gedit, gmake, and bash, with a few perl scripts to take care of versioning. That's not an ide. And no, I don't use macros or syntax highlighting.
Ah the memories of the 1990s, and flame wars in comp.lang.perl over whether syntax highlighting editors were evil or not. Who knew it would come around again?
Your whole argument is an example of Anecdotal Fallacy; "using a personal experience or an isolated example instead of sound reasoning or compelling evidence". Your setup presumably suits your personal purposes, but asserting that everybody who doesn't do it your way is stupid, wrong and unprofessional is fundamentally flawed. And makes you look foolish. Good developers use the appropriate tools for the job.
Never claimed that my personal setup is the one that everyone should use. I was pointing out the FACT that it's easy to do Java development without a bloated hand-holding IDE (see the subject line). So what fallacy have you just engaged in? Hmm... where do I start ...
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
I was pointing out the FACT that it's easy to do Java development without a bloated hand-holding IDE.
...the FACT that it's easy to do small-scale Java development without an IDE
FTFY
You keep using the terms "bloated" and "hand-holding" without providing any evidence; just your own personal opinion.
Judging from your own choice of tooling ("gedit, gmake, and bash, with a few perl scripts to take care of versioning") you've never worked on a significant development project, or in a serious development team.
gmake for build? Really? Never heard of Maven, or Gradle, or other modern build tools? They not only build your code but they also do things like run your unit and system test suites too (you do use automated testing, right?). And you don't have to hand hack make files. And they can even be run directly from the command line.
"bash, and a few perl scripts to take care of versioning"? Really? Never heard of git, mercurial, or even subversion. Or is using an actual version control system too "bloated and hand-holding" for you?
And how do you think your DIY approach will work in continuous build and continuous deployment environments? Or with a team of 20+ developers. Or when half the team is in a different city, or a different country?
You are fully entitled to your own opinion. But making out that everyone who doesn't agree with your approach is some kind of feeble-minded loser just displays a profound ignorance of modern professional software development.
Funny how the original developers of Java didn't need a bloated Java IDE to develop it ... or is Java "small-scale"?
As for the rest, to each their own. I never said that my way was the best way for everyone, so go dunk your head in a bucket of water and cool off a bit.
A file-based version control system should allow you to rebuild any or all versions in one shot. Makes it easy to keep everything backed up on other media without installing and configuring other software, and sharing with others. KISS beats complex any day. Having policies of who can modify what is also important - "you touch this, I KILL YOU" - so that takes care of teams. Being able to build, or branch off, any specific version at any time takes care of the rest.
"Modern professions software development" "using industry-standard best practices" has failed in too many ways to even begin to count. Or haven't you noticed that, instead of shipping completed products on floppies or cds, they now "ship and patch and patch and patch and patch and patch and ..." because of the mindset of "we can patch it later so who gives a crap." The so-called "gold masters" are a lie.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
Funny how the original developers of Java didn't need a bloated Java IDE to develop it ... or is Java "small-scale"?
As for the rest, to each their own. I never said that my way was the best way for everyone, so go dunk your head in a bucket of water and cool off a bit.
A file-based version control system should allow you to rebuild any or all versions in one shot. Makes it easy to keep everything backed up on other media without installing and configuring other software, and sharing with others. KISS beats complex any day. Having policies of who can modify what is also important - "you touch this, I KILL YOU" - so that takes care of teams. Being able to build, or branch off, any specific version at any time takes care of the rest.
"Modern professions software development" "using industry-standard best practices" has failed in too many ways to even begin to count. Or haven't you noticed that, instead of shipping completed products on floppies or cds, they now "ship and patch and patch and patch and patch and patch and ..." because of the mindset of "we can patch it later so who gives a crap." The so-called "gold masters" are a lie.
I'm tempted to mod this as "Funny". It's certainly the most hilarious thing I've read today.
FWIW I haven't shipped software on physical media in years. That's what "continuous deployment" means; a continuous rolling cycle of automated build, test, and live deployment - sometimes daily. And the "test" part matters, because most paying customers do "give a crap" about the software working correctly.
As for the rest of it, it just confirms what I said in my last post.
Good luck in your programming career. You're going to need it.
Continuous deployment is an excuse for not being able to nail requirements the first time. Get the requirements right the first time, write it right the first time, test it right the first time, is a lot better than the sorry excuse that is "continuous deployment." It might be good enough for a piece of shit website, but it's not good enough for real software - the users simply won't tolerate paying for something that is in continuous alpha.
"Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.