|
|
I had a customer for a while (a very large company known by a TLA) who used Java widely for their in-house manufacturing control systems. Their primary motivation was because it worked on all of the OSs they needed to support which included AIX, Linux, OS/2, WinNT, 2000, XP, and who knows what else. They were able to have a very, very high degree of reusability between all of those platforms also. If I recall correctly, that factor was 100% once the figured out the various issues they had. These were systems that communicated with PLCs, other control systems, and their manufacturing database. The primary function of their systems was to interface between the manufacturing database and the various manufacturing systems. I was involved in the development of several of those manufacturing systems. AFAIK, they are still in production too. That was a long time ago, in a galaxy far, far away.
|
|
|
|
|
That was a great story and a great example of the goodness of Java. I really like to hear stories like that about technology.
Thanks for sharing.
|
|
|
|
|
Some of our projects are very similar: interconnecting PLC's, manufacture DB's, process control systems and getting the result to layer 4 or 5.
The choice of technology you have in such an environment is really limited, because you often need to support various OS technologies and each version is fairly old. For Windows systems in particular, we have to support Vista with no updates, except for security patches.
Instead of using Java, which would be the obvious choice, we package everything into .NET Standard 2.0 libraries. For modern systems we run those with .NET Core, for legacy systems (both Unix and Windows) we use a custom Mono branch. It's always weird and nice to see brand new nugget packages actually working on Vista.
|
|
|
|
|
Good question, shame there arent more answers.
So far it seems to be usable on Androids and that's it.
My own, outsiders opinion, it that it is dead. I had a friends some years ago who used Java, who agreed, except for J2EE, what ever that is.
.Net (a Javaesque VM), and C# (Javaesque language) pretty much killed it off after Msft were told to stop messing with the Java standard by taking so much market share.
|
|
|
|
|
Munchies_Matt wrote: So far it seems to be usable on Androids and that's it.
My own, outsiders opinion, it that it is dead.
I think I have to agree. It just seems as if it is irrelevant now as there are other newer better ways that are better supported to get what you want.
I only really got involved with Java because of Android and now Android may very well shift to Kotlin.
And these reasons we are mentioning are probably why Google is moving toward Kotlin for Android.
|
|
|
|
|
Not to mention avoiding another drawn out baseless lawsuit from Oracle Corporation.
|
|
|
|
|
I worked on a project years ago that was a mix of Java client and C/C++ on Linux server. We chose Java because the client needed to run on all platforms, every flavour of Unix/Linux, Windows, Mac etc. As one of the few Java guys I did most of my development in emacs, only switching to eclipse late in the project. I think I still preferred emacs.
|
|
|
|
|
Yeah Eclipse was so painfully bloated and slow. I was so glad when Android moved to IntelliJ Android Studio.
|
|
|
|
|
Well it was for Android, but not for ordinary Java development. I think the bloatishness is caused by the structure of Android applications, rather than the IDE. Early versions of Android studio were utterly useless on anything less than Performance Computer, XC Series Supercomputers - Cray[^].
|
|
|
|
|
raddevus wrote: I'm thinking about Java and how much I like the idea of Java but I'm also wondering if it really is a dead thing -- except legacy work.
Versus what exactly?
TIOBE Index | TIOBE - The Software Quality Company[^]
Notice where C is in that list? (To answer question about something being too old.)
raddevus wrote: Is Java a valid choice for cross-platform development (windows to linux to macOS)?
I have been developing for six years in windows, only windows, and delivering solutions that run in linux, only linux. So certainly seems to work for me.
raddevus wrote: I used Eclipse in the earlier days of Android Development and thought
I didn't care for eclipse when I used it long ago. I liked the VS IDE when I was doing C#, but even with that I still used my own editor and only used the IDE for building and running. I have heard good things about Intellij.
And for 4 years I didn't use an IDE at all.
raddevus wrote: I examined a JavaFX sample project and noticed the entire UI was built in code
Not sure what any of that means. But not really a UI person. However at least recently those that I know that do UIs use javascript and html. Those however would both still be 'code'.
|
|
|
|
|
jschell wrote: Notice where C is in that list?
Yes, but C specifically solves a problem that other languages really do not, or do not do well: embedded programming. And for embedded programming, C is as good as ever. It makes sense to use C in embedded programming since Object Oriented languages are overkill for the most part. I guess anything can be compiled down but good old C just works.
jschell wrote: I know that do UIs use javascript and html
That's my point also. If a person is working on a desktop or app type of thing then Java hasn't provided a great way to build UIs. And since HTML / CSS is there, why not just use that since you app will "deploy" in multiple worlds.
Also, now with dotnet core you can run your ASP.NET MVC web site on Linux* so easily so why would anyone even choose Java EE / JSP etc?
I just worked through getting an ASP.NET MVC web site running on a DigitalOcean droplet (Debian) and it worked so well it was amazing. .NET dev on Linux is very easy now so Java will probably lose more ground.
|
|
|
|
|
Even C is kinda being left out only for high-compatibility, in the microcontroller world. Modern C++ compilers practically eliminate any run-time overhead (when compared do C) for most stuff, so there's no reason not to take advantage of C++'s features, like pointers and polymorphism. As a personal note, it's so much f***ing nicer developing code for micros with proper classes and following SOLID principals. Sure, you have to make some concessions, some time, for the sake of performance (indirections have a small but measureable cost), but overall it sure beats all global, all static functions like the old Arduino projects.
|
|
|
|
|
Hear, hear. I got back into programming microcontrollers after a 15 year break and was shocked to see that frameworks and libraries had not really evolved in all that time one jot. Using a bit of C++ template programming to create drivers for on-board hardware modules made everything really sweet - and fast too. Sorry, total departure from the original topic. I'll crawl back into my hole...
|
|
|
|
|
|
No, I've got no public code - it's all proprietary (but more out of laziness than anything). Though I really aught to publish my general-purpose template driver library for the ARM-based Atmel SAM series of microcontrollers. One might argue that template programming is sometimes inefficient code size-wise, but microcontrollers often have a generous amount of on-board flash (and really very little in the way of RAM) so it doesn't matter. Also, as we can make the compiler produce code for each individual module, say a timer, we don't need to maintain differences between one timer and another e.g. register addresses, I/O pin assignments, differences in functional ability etc in precious RAM - it can all get hard coded with added performance benefits. If you're interested, I recommend "Real-Time C++ - Efficient Object-Orientated and Template Microcontroller Programming" by Chris Kormanyos.
|
|
|
|
|
Exactly, ROM is usually not an issue, RAM is. So the extra cost doesn't really affect. I've yet to master a simple and effective way of doing some sort of HAL, and will need it soon (migrating some projects from AtTiny85 and AtMega328P to STM32), without resorting to high-level overloading. Any tips on that?
I'll take a peek at the book, thanks for the reference.
|
|
|
|
|
Yeah, I've done both (C on Arudino and the newer Arduino) and I definitely agree with you. Plus, C++ is the language I learned to program in the beginning so I will always have a fondness for it.
|
|
|
|
|
If you use pointers and a #define null nullptr, you can almost pretend you're using a high level language :p
|
|
|
|
|
raddevus wrote: Yes, but C specifically solves a problem that other languages really do not, or do not do well: embedded programming. And for embedded programming, C is as good as ever. It makes sense to use C in embedded programming since Object Oriented languages are overkill for the most part. I guess anything can be compiled down but good old C just works.
That is a rationalization. I know a company that only works in C++ and they are not doing embedded programming. All server side.
And my response was to your suggestion that Java was dying and that C# would specifically replace it. There is no evidence of that and Java being an "old" language has nothing to do with that.
raddevus wrote: And since HTML / CSS is there, why not just use that since you app will "deploy" in multiple worlds.
Not sure what that means. On the client side, in my experience, complex projects use html and javascript. CSS is part of that mix but helps the other two - it is not a solution by itself. But regardless none of that has anything to do with Java nor C#.
raddevus wrote: Also, now with dotnet core you can run your ASP.NET MVC web site on Linux* so easily so why would anyone even choose Java EE / JSP etc?
I can run Apache (http server) and perl CGI on probably every system that exists in the world going back to the 70s. That includes all current flavors of linux, Mac OSX (and prior ones) and windows going back to about Windows 95.
Doesn't mean I want to however.
raddevus wrote: and it worked so well it was amazing.
And I like oatmeal raisin cookies but that doesn't mean that I am going to claim that chocolate chip cookies are doomed.
|
|
|
|
|
.Net on Linux doesn't appear to have any GUI support. Nor a decent debugger
|
|
|
|
|
Thanks for chiming in on the discussion. That is a very good point that I didn't consider or know about.
|
|
|
|
|
Java once served a good purpose - one language that with minor variations, could enable source code to run on different OSs. One of the things that hurt Java was Sun's religious war with Microsoft. The end result was that Microsoft could not adapt and extend Java without violating licensing agreements, and Sun ensured that Java runtimes for Windows were dog-slow compared to other OSs.
Sun eventually went out of business from focusing on the religious wars and not on business success. Microsoft created C# when they could not legally use Java, and with the Mono and Xamarin advances in portability, now C# with .NET Standard can run on multiple OSs faster and with a better language than Java.
Today, your best bet for portability is C# and .NET Standard. With Xamarin, now a part of Visual Studio (including the free Community Edition), you can write C# code and with little variation, run native code on Windows, iOS, and Android. And with C# and Visual studio, you also can write code that runs on Windows, Linux, and MacOS.
Java is fading, and Oracle is not trying to keep up. You want a free UI and development environment? Get Visual Studio 2017 Community Edition and have at it.
|
|
|
|
|
That's actually a very astute, well-informed summary of the situation, I think.
MSBassSinger wrote: Java is fading, and Oracle is not trying to keep up
That was my exact feeling as I attempted to try some simple things with Java.
MSBassSinger wrote: Today, your best bet for portability is C# and .NET Standard. With Xamarin, now a part of Visual Studio (including the free Community Edition)
I agree again.
I also just deployed an ASP.NET MVC app to my DigitalOcean droplet (Debian) as a dotnet core app and was amazed at how well it works on the little Linux container with limited resources, etc.
|
|
|
|
|
Java isn't dead yet, but Oracle is working hard to kill it.
|
|
|
|
|