[aprssig] Rant - Cross platform portability
Rich Mulvey
aprs at mulveyfamily.com
Mon Sep 18 09:20:16 EDT 2006
Gregg Wonderly wrote:
> Jim Lux wrote:
>> Gregg makes some comments about the availability of software for a
>> variety of environments, and that triggers some comments about
>> software development, not necessarily directed at Gregg personally,
>> but at a general misunderstanding of how and why software gets
>> developed.
>
> Hi Jim, I guess I stirred up some emotions. Without going after every
> point that you enumerated in your response, let me just say that I've
> been developing software in a number of environments over the past 20+
> years. I have a masters degree in software development focused in
> areas of operating systems and computer language development. I've
> developed windows software, unix software extensively, and 10 years
> ago started using Java for all of my core application development.
> So, I have some experience to draw on for my opinions.
>
> If you will search on the internet for "gregg wonderly java jini
> software" you will find that I have about 10 open source projects
> visible in the communities related to my interests. These projects,
> include a complete replacement for Echolink, written in Java, which
> runs, without ANY porting needed on windows, linux and mac os-x.
> Because Java provides a nice abstraction to the sound system, I don't
> have to know about how that works. Because Java provides a "look and
> feel" abstraction, the OSes native graphics subsystem is abstracted
> for me and all the font sizing, spacing and layout is taken care of
> for me.
>
> When I started openlink, I had some free moments. When I got GUI done
> after a couple of weeks of spare time work, I started looking around
> for PSK-31 libraries to copy by translating to Java. As I said,
> unfortunately, these libraries are optimized with ASM code, or are
> otherwise tied into a particular environment.
>
> On any of the existing OSes that are in consumer computers, you will
> always have scheduling pauses related to timesharing of the CPU. Your
> comments about the speed of Java seem to be based on old experience or
> some third party comments. I have large scale production systems
> running on Java with massive throughput and not problems with
> performance. The Sun Just In Time (JIT) compiler can typically equal
> or better many C and C++ compilers of the same algorithms because of
> the depth of analysis and the fact that they compile with runtime
> knowledge about the actual execution paths and frequency of passes
> through the code.
>
I have to second this. I develop large-scale corporate Java systems
that do everything from traditional card walloping business applications
to extremely compute-intensive image manipulation tools, and they are
often superior to the corresponding C/C++ applications in both
development time and execution speed. One example: We had a C
application that would take a TIFF image, analyze it, determine where
there was text on a page and where halftones were located - even
halftones that were completely overlaid on the text and irregular in
size - and then break the page into two files - one that contains just
the underlying text, and the other that contains just the halftone
images. This is about as intensive an app as you're likely to find in a
corporate environment. The Java app was as close to a 1-1 source
translation of the C code as was possible. On the average, it runs
about 1.5x faster on JDK 1.5 as it does on the latest version of the GNU
C compiler on Solaris and Linux boxes. I can't wait to see how fast it
runs when we actually optimize it. ;-)
> I stick by my comments that there is no reason that Amatuer radio
> software should not be being developed as cross platform.
>
Now, on this I have to disagree, at least when it comes to certain
Java applications. Deploying Java apps to the end-user can be a total
PITA. WebStart systems are one way - but IME a lot of users are so far
behind the technology curve that they don't have browsers set up for
it. I've found that even having a web page with direct links to a JRE,
and telling them "Download this, run it, and you'll be ready to go" is
an exercise best suited for a masochist. My experience with free
cross-platform Java application packager/installers is that they haven't
tended to work particularly well, though, admittedly, the last time I
surveyed them was about two years ago.
The biggest issue that I've run into is the problem with Sun's
abandonment of the javax.comm/serial/parallel port support for Windows.
Most of the Amateur Radio apps I've run into need some sort of rig
control, and with Sun bailing on comm support for the largest installed
base of machines, that becomes a problem. Yes, there's rxtx and a
couple of commercial implementations. RXTX is pretty good, and has
gotten much better over time, but I still run into the occasional
problem with it.
But that just underscores some of the many development hurdles to
cross-platform apps. With the majority of Windows development systems,
you essentially get one-stop shopping for everything from the
presentation layer to hardware interfaces. With Java it's more a case
of "Get something from HERE, and then something from THERE, and then
something else from OVER THERE - and then we can build a useful tool" -
and that's something that many of the people developing open source
applications just aren't willing to deal with.
- Rich
More information about the aprssig
mailing list