I know for trivial to medium level applications java is pretty portable. What has been the jetbrainer's experience with it? Are you constantly having to check for the OS and make amends for it?
I can't speak for swing apps, but in our large (5000 class) web application, we do all of our development on windows and deploy on Sun boxes with no portability problems.
I work at a non-trivial sized shop and my team develops on a variety of platforms (I develop on OSX, others on Windows2000 and a few on Linux) and we have absolutely no problem moving any of our GUI, Web Application, Mobile or server components anywhere.
The gui is the only thing I can imagine having problems. If you did lots of threading you may have trouble going from a time sliced to a pre-emptive environment. Since idea is a very complex gui I figured if anyone would have swing problems it would be them.
I know for trivial to medium level applications java is pretty portable. What has been the jetbrainer's experience with it? Are you constantly having to check for the OS and make amends for it?
PerformaSure (1500 Java files excluding tests) runs on multiple platforms: Windows 2000/XP, Solaris 2.7/8, AIX 4.something, HPUX, Redhat Linux. As far as I know, the only platform specific checks needed in the GUI are for one or two integrations with Windows-only apps in the GUI subsystem (i.e. a Tools menu). Otherwise the GUI is 100% pure-Java, no native code.
In the non-GUI subsystems, there are parts which have to be written in C/C++ using JNI because they're interfacing to a particular API which only exists on that platform, e.g. Windows' PDH library for gathering performance statistics. In the Java, there are checks here and there for the current platform type so that we can determine whether to execute a .sh or a .cmd file, etc. Otherwise, the non-GUI subsystems are pure Java, I'd guesstimate at about 90%.
Nearly all the portability problems that we have are with the native code (the bits of which that are shared across platforms) and the bizarre C/C++ compilers one finds on platforms like HPUX.
So, yes, Java is very portable.
Ciao, Gordon
-- Gordon Tyler (Software Developer) Quest Software <http://java.quest.com/> 260 King Street East, Toronto, Ontario M5A 4L5, Canada Voice: 416-643-4846 | Fax: 416-594-1919
I know for trivial to medium level applications java is pretty portable. What has been the jetbrainer's experience with it? Are you constantly having to check for the OS and make amends for it?
It's sad, but AWT and Swing is very bad UI platform :( Too many AWT things work different event under officially supported implementations like Win32 and Linux. Mac OS X is even worse. AWT API is poor, outdated and buggy. SUN is very inert, so don't think that your reported bugs will be fixed in acceptable time period. So if your UI is simple and standard, then SWT is the best choice.
With best regards, Vladimir Kondratyev _____________________ JetBrains
We are developing a (fairly large) web-based application on Windows and deploy to Linux and Solaris. We are not using Swing, some AWT.
There are very little cross-platform issues:
- case-sensitive file names (UNIX file names are case sensitve, Windows file names are not)
- we used to have problems with headless systems, but that has been greatly simplified with headless support in JDK 1.4.2. Before that we used PJA toolkit.
- the chances to run into a multi-thread deadlocks are usually bigger on UNIX, and it's not always possible to debug them on Windows. Having a debugger under UNIX should be helpful in such cases.
I can't speak for swing apps, but in our large (5000 class) web application, we do all of our development on windows and deploy on Sun boxes with no portability problems.
I've had similar experiences, even with Swing apps.
I work at a non-trivial sized shop and my team develops on a variety of platforms (I develop on OSX, others on Windows2000 and a few on Linux) and we have absolutely no problem moving any of our GUI, Web Application, Mobile or server components anywhere.
The gui is the only thing I can imagine having problems. If you did lots of threading you may have trouble going from a time sliced to a pre-emptive environment. Since idea is a very complex gui I figured if anyone would have swing problems it would be them.
charles decroes wrote:
PerformaSure (1500 Java files excluding tests) runs on multiple
platforms: Windows 2000/XP, Solaris 2.7/8, AIX 4.something, HPUX, Redhat
Linux. As far as I know, the only platform specific checks needed in the
GUI are for one or two integrations with Windows-only apps in the GUI
subsystem (i.e. a Tools menu). Otherwise the GUI is 100% pure-Java, no
native code.
In the non-GUI subsystems, there are parts which have to be written in
C/C++ using JNI because they're interfacing to a particular API which
only exists on that platform, e.g. Windows' PDH library for gathering
performance statistics. In the Java, there are checks here and there for
the current platform type so that we can determine whether to execute a
.sh or a .cmd file, etc. Otherwise, the non-GUI subsystems are pure
Java, I'd guesstimate at about 90%.
Nearly all the portability problems that we have are with the native
code (the bits of which that are shared across platforms) and the
bizarre C/C++ compilers one finds on platforms like HPUX.
So, yes, Java is very portable.
Ciao,
Gordon
--
Gordon Tyler (Software Developer)
Quest Software <http://java.quest.com/>
260 King Street East, Toronto, Ontario M5A 4L5, Canada
Voice: 416-643-4846 | Fax: 416-594-1919
charles decroes wrote:
It's sad, but AWT and Swing is very bad UI platform :( Too many AWT
things work different event under officially supported implementations
like Win32 and Linux. Mac OS X is even worse. AWT API is poor, outdated
and buggy. SUN is very inert, so don't think that your reported bugs
will be fixed in acceptable time period. So if your UI is simple and
standard, then SWT is the best choice.
With best regards,
Vladimir Kondratyev
_____________________
JetBrains
We are developing a (fairly large) web-based application on Windows and deploy to Linux and Solaris. We are not using Swing, some AWT.
There are very little cross-platform issues:
- case-sensitive file names (UNIX file names are case sensitve, Windows file names are not)
- we used to have problems with headless systems, but that has been greatly simplified with headless support in JDK 1.4.2. Before that we used PJA toolkit.
- the chances to run into a multi-thread deadlocks are usually bigger on UNIX, and it's not always possible to debug them on Windows. Having a debugger under UNIX should be helpful in such cases.