TimGalant wrote: |
---|
At last, what's you opinion on the idea of creating this application in Java? |
I was in a pinch when I posted before, let me go through my first impressions and throw a few random thoughts out there.
First, the project that you are considering in C++ is going to be very large for a single developer--particularly one with limited similar experience. That does not make it impossible but if you're anything like me the project will never reach completion. Not only will this project require an understanding of C++ syntax but it will also involve external libraries and their interfaces, distributed architecture, network communication, a GUI (probably platform-independent from the above considerations of OS), and a number of other less-explicitly-mentioned skills (engineering process, debugging, a build strategy/environment, deployment, etc.).
Now, I'm certainly not familiar with all of the technologies available but I am familiar with a few here and there. Java, happens to be well-known for both platform-independence and a comprehensive set of standard class libraries. The latter is a strong point for this project, in my opinion. The communications, GUI, etc. are already there waiting. In C++, you can get caught in a real struggle trying to integrate various libraries.
Now, I'm no Java guru or anything but these sound like pretty strong selling points for this application. Adversely, Java is often criticized for being slow. This application seems to be mostly network communication and a few GUIs--both of which do not require top-notch performance.
NGen wrote: |
---|
Wouldn't turning on/off electrical appliances and what-not be impossible in Java? I mean, of course it would be impossible in C++, but at least in C++ you can load DLLs that could be made in Assembly, or maybe use some compiler that supports inline assembly. |
I don't think Java is a good option (if even possible) for device drivers or embedded applications, if that's what you mean. In my experience most external devices already have some kind of protocol/interface available (via some port, IP address, TCP/IP, etc.). Java should be able to communicate with these types of things. Distributed systems communicate with messages and the language/application that sent the message should not even be detectable at the other end. In other words, you could still write a C++ process to do something and communicate to it from a Java process.
In summary, I think this kind of application could be completed much, much sooner in Java rather than C++. Additionally, there are also other options that should be considered--I just brought up Java because I'm familiar with it. Maybe someone will chime in about C#, Python, etc.. Even still, it's a big commitment and I think a nice reality-check might be in order (no offense, OP).