I'm no longer a fan of cross platform development. While it means extra work, I believe it is better to choose the right tools/languages for each platform and get the best out of them. Cross platform development just means we get mediocre results on multiple platforms with extra headaches throughout the software's life cycle. It was a nice experiment but in the end it just made things bad and rewarded sloppy development practices. We lost a lot chasing cross platform development, endless frameworks and complex toolchains. Give me a good C compiler any day and let me build it right rather than just right now.
I can see your argument somewhat for some applications, though there are some parts of an application that do not change across platforms, typically business logic. And having those duplicated is typically (very) problematic, at least for business logic. Though, depending on the type of application as well as the architecture, if you have most or almost all of the business logic server-side, that is less of or not an issue. Whether such a solution or similar makes sense tends to depend on the domain as well as goals and requirements of the project.
Then there is the issue of cross-platform all the way. And I think you have some very good points. But, I would also say that it depends on the priorities and the target quality. If mediocre or crap is OK, then doing a different solution might be too expensive (though, in some cases such solutions might be problematic in some regards, requirements and priorities might change, and such a solution might not be future-safe - building and planning it in such a way that you can throw the crappy parts away or similar plans might be a good idea). I do believe there are some cross-platform applications written in cross-platform languages and tools that do very well and have good quality for what they do, though it definitely does not always happen or is viable for all projects.
That said, I would say that C can be written in a fully cross-platform way for most kinds of applications, though this may also depend on the definition of cross-platform being used - cross-platform all the way, just the server-side, or other.
The Java Virtual Machine is an ABOMINATION, the JVM is to programming what SJWs are to society!
Java the language is slightly less insane, it is just a very prolix committee designed language that suck the will to live out of you.
The Java standard libraries are the least worse, nevertheless instead of doing few things very well they do many things half-assed.
If Marxism, Egalitarianism/Feminism and Java prove anything is that when smart people fuck up they fuck up BIG TIME.
Once again the idea of running virtual machines especially on mobile platforms, and so energy bound, is so idiotic it should have received the Nobel Peace prize together with Arafat, Kissinger and Obama.
I did also find it a bit curious that Java was used for mobile platforms, but as I recall, Java was originally meant to run on certain kinds of embedded platforms, with its main feature being cross-platform. There was (might still be) something like Java ME, though I would believe it is scarcely used these days. The main "editions" of the Java "platform" ended up, I believe, too bloated for many purposes, including containers - the idea of running multiple applications on the same JVM and thus "amortizing" (I think the CS-term is) or decreasing the overhead of the JVM per application did not have enough isolation and was also a very Java-specific solution which does not play well with generic containers and the like. I believe that is why they have sought to "modularize" the JVM itself, primarily for the purpose of making it more suitable for usage with containers through less overhead per JVM instance, and I believe that is why it does not seem to be a solution that is encouraged for any libraries or applications in the ecosystem (though I could be wrong about it not being encouraged).
I do very much like the cross-platform aspect of it, especially the cross-platform concurrency support - Java was one of the first mainstream languages/platforms to get an official memory model, and C++ as well as .NET only got it several years later I believe. There are other and in multiple important regards better ways of approaching some of the challenges that one might encounter reg. concurrency and related aspects, such as shared-nothing concurrency as well as the way that Erlang approached both concurrency and distributed systems, but those did for various reasons not hit the mainstream as much (I have heard that the Erlang VM/runtime is not as efficient as the JVM reg. speed, for instance due to JIT and other runtime optimizations as well as Java being statically typed, though it might be better reg. memory usage and other aspects - I do not know).
Java the language has gotten much better with Java 8, though is still very warty. There are other languages - I like Scala myself, but cannot unconditionally recommend it: often breaking backwards compatibility; compilation times (though the code can also be shorter); poor tooling (not that the tool authors did not work hard and well on it, more that the language is both complex (its core is actually small, but a lot is built upon that core, and the academic influence can result in half-baked and experimental parts being included) AND has kept changing a lot); abuse, harrassment and hostile take-overs by SJWs or (((people))) of major libraries and the like, counts against it. But it does have some very nice things, and the Java language designers look a lot at Scala when figuring how to evolve Java the language, especially the ML and functional programming features and how Scala encodes/implements them on the JVM and its approaches and abstractions reg. it. They do seem to seek to learn from the mistakes and experiences of Scala, and they have the advantage of controlling the platform and being able to change it.
Marxism wasn't a fuck up. It functions pretty much exactly as designed -- promise naive idiots the world for just long enough to seize power, then have them killed if they complain about your lying.
11 comments
0 u/boredTech 11 Sep 2018 19:49
Hurrah, watch as new jvms hit the world untested and provide tons of data leaks. WOOO!
0 u/Morbo 11 Sep 2018 20:15
Does it garbage collect Java itself? That would be very exciting to me if it did.
0 u/notenoughstuff [OP] 11 Sep 2018 20:30
Java the language, Java the JVM, or Java the ecosystem?
0 u/Morbo 11 Sep 2018 21:28
All of the above.
0 u/notenoughstuff [OP] 11 Sep 2018 21:50
Any good alternatives in your opinion, especially if you want something that has good cross-platform concurrency support?
0 u/Morbo 11 Sep 2018 23:34
I'm no longer a fan of cross platform development. While it means extra work, I believe it is better to choose the right tools/languages for each platform and get the best out of them. Cross platform development just means we get mediocre results on multiple platforms with extra headaches throughout the software's life cycle. It was a nice experiment but in the end it just made things bad and rewarded sloppy development practices. We lost a lot chasing cross platform development, endless frameworks and complex toolchains. Give me a good C compiler any day and let me build it right rather than just right now.
0 u/notenoughstuff [OP] 12 Sep 2018 06:23
I can see your argument somewhat for some applications, though there are some parts of an application that do not change across platforms, typically business logic. And having those duplicated is typically (very) problematic, at least for business logic. Though, depending on the type of application as well as the architecture, if you have most or almost all of the business logic server-side, that is less of or not an issue. Whether such a solution or similar makes sense tends to depend on the domain as well as goals and requirements of the project.
Then there is the issue of cross-platform all the way. And I think you have some very good points. But, I would also say that it depends on the priorities and the target quality. If mediocre or crap is OK, then doing a different solution might be too expensive (though, in some cases such solutions might be problematic in some regards, requirements and priorities might change, and such a solution might not be future-safe - building and planning it in such a way that you can throw the crappy parts away or similar plans might be a good idea). I do believe there are some cross-platform applications written in cross-platform languages and tools that do very well and have good quality for what they do, though it definitely does not always happen or is viable for all projects.
That said, I would say that C can be written in a fully cross-platform way for most kinds of applications, though this may also depend on the definition of cross-platform being used - cross-platform all the way, just the server-side, or other.
0 u/Laplace 14 Sep 2018 22:46
The Java Virtual Machine is an ABOMINATION, the JVM is to programming what SJWs are to society!
Java the language is slightly less insane, it is just a very prolix committee designed language that suck the will to live out of you.
The Java standard libraries are the least worse, nevertheless instead of doing few things very well they do many things half-assed.
If Marxism, Egalitarianism/Feminism and Java prove anything is that when smart people fuck up they fuck up BIG TIME.
Once again the idea of running virtual machines especially on mobile platforms, and so energy bound, is so idiotic it should have received the Nobel Peace prize together with Arafat, Kissinger and Obama.
0 u/notenoughstuff [OP] 15 Sep 2018 08:30
I did also find it a bit curious that Java was used for mobile platforms, but as I recall, Java was originally meant to run on certain kinds of embedded platforms, with its main feature being cross-platform. There was (might still be) something like Java ME, though I would believe it is scarcely used these days. The main "editions" of the Java "platform" ended up, I believe, too bloated for many purposes, including containers - the idea of running multiple applications on the same JVM and thus "amortizing" (I think the CS-term is) or decreasing the overhead of the JVM per application did not have enough isolation and was also a very Java-specific solution which does not play well with generic containers and the like. I believe that is why they have sought to "modularize" the JVM itself, primarily for the purpose of making it more suitable for usage with containers through less overhead per JVM instance, and I believe that is why it does not seem to be a solution that is encouraged for any libraries or applications in the ecosystem (though I could be wrong about it not being encouraged).
I do very much like the cross-platform aspect of it, especially the cross-platform concurrency support - Java was one of the first mainstream languages/platforms to get an official memory model, and C++ as well as .NET only got it several years later I believe. There are other and in multiple important regards better ways of approaching some of the challenges that one might encounter reg. concurrency and related aspects, such as shared-nothing concurrency as well as the way that Erlang approached both concurrency and distributed systems, but those did for various reasons not hit the mainstream as much (I have heard that the Erlang VM/runtime is not as efficient as the JVM reg. speed, for instance due to JIT and other runtime optimizations as well as Java being statically typed, though it might be better reg. memory usage and other aspects - I do not know).
Java the language has gotten much better with Java 8, though is still very warty. There are other languages - I like Scala myself, but cannot unconditionally recommend it: often breaking backwards compatibility; compilation times (though the code can also be shorter); poor tooling (not that the tool authors did not work hard and well on it, more that the language is both complex (its core is actually small, but a lot is built upon that core, and the academic influence can result in half-baked and experimental parts being included) AND has kept changing a lot); abuse, harrassment and hostile take-overs by SJWs or (((people))) of major libraries and the like, counts against it. But it does have some very nice things, and the Java language designers look a lot at Scala when figuring how to evolve Java the language, especially the ML and functional programming features and how Scala encodes/implements them on the JVM and its approaches and abstractions reg. it. They do seem to seek to learn from the mistakes and experiences of Scala, and they have the advantage of controlling the platform and being able to change it.
0 u/KikesDidJFK 19 Sep 2018 00:54
Marxism wasn't a fuck up. It functions pretty much exactly as designed -- promise naive idiots the world for just long enough to seize power, then have them killed if they complain about your lying.
0 u/KikesDidJFK 03 Oct 2018 09:59
Garbage collection is just about the least "exciting" thing I can think of.