That's the theory... Between September and November, I was required to show it 6 times. Twice as the passport office, twice at my credit union, and twice at an escrow company.
I would believe you if said this hurt you or the company that paid you to rewrite things, but I don't see how this hurts the free software movement (sorry, but I don't particularly care about the open source movement). Reinventing the wheel is the price one pays for not cooperating with the community.
It isn't that they don't want to cooperate, but that (at least they feel) GPL doesn't give them the necessary freedoms TO cooperate. Sure, reinventing is a waste of my time and their money, but wouldn't it be better for the community (and even what they claim to be encouraging) if I were to make their product better for the whole community? The only reason I can't is because it is GPL instead of BSD or even LGPL. It hurts the open source community because they are getting less input and fixes than they would have had with ANY other license.
Why did you put "return to the community" in parenthesis? This is the *only* germane part of your argument.
It was an aside.
No amount of harm to you or your company counts when asking whether the GPL harms the free software community
The developers and companies would be willing to spend their time and money giving back to the community, but can't because they can't use GPLd software. The part that hurts the community, as in the previous section, is that they are forcing companies and people to turn away that would have helped out otherwise.
a company that forbids even *downloading* anything licensed under the GPL (an idiotic policy, by the way)
If I am writing a Grep utility, and I download (and thus possibly browse the source for) a GPLd version, I am breaking the spirit of the license, even if not the letter of the license, by using GPL ideas to write non-GPL code. Thus, companies (like Intel) have forbade me from downloading GPL software. It isn't that we can't download ANY GPL software, just none that has any similarity to anything that we are writing. And, to be honest, due to the spirit of the GPL, I think that is the right call -- the GPL community doesn't want their code, ANY of their code, to influence non-GPL code. You can correct me if I am wrong there.
Also, you are failing to distinguish between GPL applications and GPL libraries. Anyone willing to return improvements to the community should have no problem with the former. Do you admit that what you really despise is the use of the GPL for libraries and not the license itself?
It isn't always a library issue. For example, the Grep utility would be considered an application, not a library. Sure, I can improve grep for everyone -- but that doesn't help with the project I am being paid to write, since I could not link against it or anything (for say a Find button in the GUI). Since I can not use the grep application from the find button in my GUI, I am not about to download and wade through the source when I have other things I am required to do. Instead, I will have to write my own version (and thus REALLY don't want to download or wade through the original source).
When there are competing proprietary libraries they prefer the LGPL for exactly the reason you mentioned. Only when a library is unique and innovative do they recommend the GPL.
I understand that, but it isn't just libraries that logic applies to -- a'la Grep.
In such cases the loss of your potential improvements is probably made up for by the incentive this gives to more sane organizations to make their application free software.
What incentive? Even as an independant developer, I don't see that part of it.
Remember that helping people to create proprietary applications is not the goal of the free software community.
Yes, I agree. However, the "Open Source Community" these days seems to be more GPL vs. Non-GPL. It should not be that way. There are many non-GPL licenses that are considered Open Source, but the GPL movement discourages those (and even public domain) just as much as propriet
I have to admit, even with the various concerns I have (and the ones listed here), I pre-ordered.
Why? Because I have thought of designing something like this for myself in the past. Even though I no longer carry half my cards anymore (BiMart, et all), I somehow still manage to have WAY too many... Obviously, i could not replace my drivers license (no Mr. Officer, really, this is valid)... looking through my wallet while replying to this, I found 12 cards that I could easily get rid of. Wierd thing is, I thought there would be more, but 1/2 my cards wouldn't work with this (I think), like Social Security Card, OMMP, etc -- because there is no barcode/smartChip/magStripe/RFID on them. IF it was able to simply show me the front and back of any of my cards, like a jpg or something, then I could easily double the number I could get rid of. Of course, at that point, it would probably be really useful for all those damned business cards that manage to get into my wallet too.
If you had read the article, you would know that isn't possible. Only your fingerprint can turn the device on, and the cards are only enabled for 10 minutes at a time.
So, to steal from you, someone would have to either use your card in that 10-minute window, or they would have to steal your fingerprint (which I admit, CAN be done).
And you think it is acceptable that JNI code can break between minor VM releases?
Well, the problem is in the C code. The situations I have seen, they hard-code the location to load jvm.lib/dll from. In my experience, that was the reason they included Java at all, so they would know where to find that library. Unfortunately, however, if I am calling into their program, and it loads their archaic version of Java, some of the features my code might rely on may not exist yet. The problem was in the C code, though, not the Java code.
Back? Please consider what I actually wrote: Actually, if Sun does choose to release a free software virtual machine they will certainly use the GNU GPL or something like it.
Back, because discussions about "Open Sourcing Java" was what started this conversation.
Are you really unable to distinguish between the Object class and a virtual machine?
No, but the assumption is that they would have to OpenSource the core libraries as well as the VM itself.
As far as making Object GPL goes, you may be right that this would require derivative works to be released under a GPL compatible license (and you may be wrong, depending on how a court chooses to interpret a derivative work)
Even if a court chose to say otherwise, doesn't the whole concept that EVERYTHING extends Object (even if you don't do it explicitely) require GPL, by the Spirit of the GPL?
I doubt that Sun would do such a thing. More likely they would release the virtual machine under the GPL and the class libraries under the LGPL.
That, IMHO, would be a much more reasonable approach. I have nothing against the LGPL. Although, wouldn't LGPL allow two different vendors to have a DIFFERENT implementation of the Object class, perhaps with its own methods that only exist on their platform? That could break cross-platformability.
but your claim that this license hurts the open source community is completely preposterous
Since many companies have made me rewrite things because the current implementations were GPL (ie: reinvent the wheel), I claim this hurts the open source movement. Had those library been LGPL, for example, those companies would have allowed me to use and even improve upon (and return to the community) those libraries. Since they were GPL, we were not even allowed to download them. I can honestly say that I think the LGPL helps the community, but the GPL ensures that the same code gets rewritten over and over and over instead of being improved upon by those that can not use the GPL for one reason or another.
And by the way, how exactly do you reconcile despising the GPL while rallying to the defense of the much more restrictive license under which the Java virtual machine is currently distributed? That must be an interesting bit of mental gymnastics, and I'd like to know more about it.
Simple, I can license my Java programs under any license I want. The GPL restricts my rights to my own code -- the Java licenses do not. You say that they are more restrictive, but proof-in-point is that GPL puts restrictions on your Java program that Sun/Apache/etc do not. When I can do whatever the hell I want, I do not feel restricted.
Upgrading a platform does not have to make it unstable
If you look at the FreeBSD documentation, they explain that the reason they do not do lots of updates like Linux does is because sometimes those patches introduce problems, whereas BSD makes sure they don't before releasing them.
I never said Java was unusable, it just requires obnoxious steps like bundling a known good virtual machine version in some cases
I have never had to bundle a JVM with any software I have written. In fact, the last major software I did, the readme (html-based) had a link (JNLP) to launch the application, and a link to install the JRE if the JNLP link failed. But, I didn't have to include a JVM.
I used to use SprintPCS for a few years, but got tired of them screwing me over. They kept charging me for calls that were never placed. They would show HUNDREDS of minutes more than my phone showed PER MONTH, and I never reset the counter on my phone. They even tried telling me that I was placing calls when I wasn't even in the area.
Finally, after complaining by phone and in person about 10 times (including contacting them with their in-store Corporate Phone a couple times, and writing them a letter on their own letterhead), I finally cancelled my service.
There is no way I am going back to them. They are complete crooks, IMHO, since they have ripped off everyone I know who has used their service. If I thought reporting them to the BBB would actually help, I would -- but it hasn't helped with the last two companies I reported.
I think the thousands of acronyms that came along with XML has ruined a whole generation of computer science students.
Would you rather I had said this:
I don't use Document Type Definitions, but I do use Extensible Markup Language Schema Definitions for all of my document formats. There is a good link to learn the basics here.
I usually use Extensible Markup Language Schema Definitions with Java Advanced Programmer Interface for Extensible Markup Language Binding because it provides me with an Object-Oriented approach to reading/writing that specific format. There are also a couple projects to do that for C++ (Rogue Wave). Personally, I *love* Extensible Markup Language Data Binding, because I no longer have to deal with Document Object Model or Simple Advanced Programmer Interface for Extensible Markup Language.
Realistically, these acronymns are the only thing that make our posts even readable/understandable.
I can get into that menu (VX4400), but... any clue how to host a GetItNow server on BSD? Any clue what the GetItNow server IS? Is it just raw http? I have no clue.
I tried sending it directly from Eudora, but the Detach Object is disabled.
So, I found the user manual online, and almost all of the advanced features say they are not implemented! How the hell can they sell phones based on features that aren't implemented???
Well, the problem there is the "choose to offer" bit. If they don't "choose to offer" your application, then no one can get access to it (including you).
The other side of that is that all of the programs I *have* downloaded suck and crash all the time, so I am not sure I would want their seal of approval;)
I don't use DTDs, but I do use XSDs for all of my document formats. There is a good link to learn the basics here.
I usually use XSD with JAXB (Java XML Bindings) because it provides me with an Object-Oriented approach to reading/writing that specific format. There are also a couple projects to do that for C++ (Rogue Wave). Personally, I *love* XML Data Binding, because I no longer have to deal with DOM or SAX.
course, having a Swing theme that emulates the *default* GTK theme and one that emulates the *current* GTK theme whatever it may be are different things. I very much doubt that Swing does or will ever do the latter. (I notice that gtkswing [sourceforge.net] clearly states that only the default theme is supported. Is that the theme you are referring to?) Remember that new GTK themes are created all the time, just as Swing themes are. How could Swing possibly have support for all of them, and why would the developers even bother trying?
I have no idea what the current Swing implementation does, as I don't run GTK. That's why I asked if you had yet tested it. What I thought it *might* be doing is something like SkinL&F, which, as I understand it, can read the GTK and KDE themes themselves, thus emulation should be completely accurate. I am not sure if that is what the Swing team did or not. I also am not sure if they have the JVM setup to use the default GTK theme, or the current one, since I am not using GTK myself. That is why I suggest you try it and see. It *might* do what you want *now*.
Consider a company that needs a prototype of a web application, for instance. A few simplistic Python scripts can be put together easily and will likely be more than fast enough to get the point across.
A few scripts might get the point across, but every time I have seen this situation, they stress tested the website to determine how well it would scale. Any time something needs to scale or get stress-tested, I can't believe launching processes is the best way.
Doing the same thing with Java is not likely to be a good idea, because the syntax is more complex, because there is a separate compile step (Python compiles to byte-code as it runs) and because performance is sure to be dire.
That would depend on the approach. Serlvets or JSP, perhaps. In my approach, I simply load a compile.class file. You COULD precompile the script (whenever the timestamp changes) automatically inside the server, thus getting the type of behavior you are expecting... Personally, I leave it at letting them run javac, as all Java developers are used to that -- but I agree, the web-app concepts all suck for distribution. That's why I am not using them in my server.
In my experience the overhead required to bring up a Java virtual machine is considerable
I am not having that experience on FreeBSD or WinXP. I can not attest to Linux speeds, but I am using the Linux JDK on my BSD box. I use Java for a lot of command-line stuff (sometimes using a batch file to launch it so I don't have to worry about where it or the supporting classpath are)... but I never have any speed problems. It launches, parses the command line, determines what to do, and can be done before my finger leaves the enter key.
What I was saying was that I think the Apache java mod was the problem... I mean, they did make one that is supposed to be A LOT faster, but I could never get it to compile.
These vendors want a JRE that they can depend on to behave predictably and whatever version you have on your system -- whether newer or older -- is considered too great a risk.
I understand these arguments, and have heard them many times from previous employers. The fact is, however, they complain about performance and bugs, but prefer to stick with one that is no longer being patched instead of using the one that fixes their issues. They should have at least 1 engineer that is able to test their system with the newer JDKs. I mean, realistically, it is a very stupid argument on their part - they spend a lot of money (billions, depending on the company) because tech support calls increase as people are using a newer version that doesn't work with their product. In my personal experience, the only problem (other than the 'assert' or 'enum' changes) is that they specifically create a JVM in JNI code, which breaks because the u
All that is really involved is using JNI to bind constructors and methods to the appropriate underlying GTK+ functions. Simple.
But, since Swing ALREADY has the GTK theme, I have to disagree that writing all the peers is any easier than calling a single line of code to switch themes.
I usually place my lightweight custom components inside an applet window and integrate them into a web application.
Hmmm.. I haven't done any applets or AWT for a couple years now. I always use Swing over JNLP. However, the key to my decision is the fact that AWT is always considered unacceptable in the looks department. If you need it embedded, I can understand using an Applet -- but otherwise, JNLP provides MUCH better performance (only updates jar-diffs if the jars have changed, instead of redownloading everything every time you hit the page). The apps I have been doing are Swing over JNLP -- and we have not had any speed problems. I can't speak to the overkill, as I think I would have to brush up on AWT to even remember how to do it.
The point I was trying to make is that this is *not* insane for all but the most demanding Python applications
I disagree. Starting a new process for every incoming request is insane regardless of language. Otherwise, Thread Pools wouldn't exist.
Python example suggests that much of the Java performance problem is due to poor virtual machine implementation rather than any fundamental flaw
I think it more likely that the Apache mod is the problem, rather than the Java VM. Pure java apps from the command-line seem to run very fast on both Windows and BSD. It is only from Apache that they seem slow.
I think you underestimate how much this kind of problem affects Java. Just try installing two or more major enterprise Java applications. Each will require a virtual machine from a specific and often mutually exclusive subset of vendors and version numbers.
Personally, I have installed a few different applications that installed their own JRE, and I submitted bug reports to those companies because A) They were installing JDK 1.2 when I already had 1.4.2 on my system; B) They were ILLEGALLY installing the JRE (which gets back to your original point). Of course, if they were using the Sun licensing correctly, their installer could have installed the newest JDK (or none at all since I had it installed already) instead of forcing me to install and end-of-lifed product.
As far as the enterprise software... I have installed a few of them, but none of them were pure-Java (WebSphere for example). The problem is that many of those Enterprise applications are being installed by big companies that have to have 100% control instead of doing 10 minutes of research to find the best way. JNLP is definitely the best Java solution for installs, but unfortunately very few big companies use it yet.
I think an open-source VM (not GPL, since they wouldn't use that) would not alleviate the problem you mention. Currently, the problem is that many times they include an end-of-lifed version of Sun's JVM. Making it so that they each have a slighty modified VM would definitely make this problem worse. IBM would have an extra opcode that no one else has, Oracle would have some pre-processing stuff that no one else has. It would more likely fracture the java stability instead of encouraging they all distribute the same thing. As an easy example, if they wanted to distribute Linux on their CD -- which would they use? RedHat? Slackware? Debian? Their own distro? I think you get my point.
Compare the sizes of the resident images, or use the "time" utiltiy (under Cygwin on Windows).
I am not sure what you are talking about with the "resident images", but using Cygwin is NOT the correct solution for measuring time on a Java platform. If you would like the correct source code to accurately measure how much time is taken on ANY platform, I can send you a copy of my class I wrote to test encryption/de
Using GTK native peers would accomplish this easily, but to do it in Java code seems impractical.
Swing implements GTK through com.sun.java.swing.plaf.gtk. I don't honestly know how difficult it would be to have the Swing team add the ability to ask the OS which theme is current, but it would probably be a hell of a lot easier than rewriting all the native peers to use AWT instead. They have been very responsive to my inquiries before, so I would highly recommend it if that is something you really want.
According to the API reference this creates a lightweight component with no native peer, much the way Swing does. A JButton is a subclass of java.awt.Component too.
Looking at the page you referenced, what it said was A lightweight component is a component that is not associated with a native opaque window. So, I guess the Component class itself is not associated with a Peer... utilizing any of the other AWT classes should cause it to be heavyweight. In fact, here's the list of AWT Peers from java.awt.peer in 1.5:
Imagine invoking a new Java VM for every incomming web process!
I don't need to do that. I start up a couple threads/selectors for each port, but I have no need to start a new process or thread for each request. I did look into using some of the Apache java mods, but I couldn't get them to work right.
I meant that the look and feel doesn't match my desktop GTK+ theme as I mentioned above.
Swing can, if we can determine which one is current... then again, maybe the GTK theme in 1.5 DOES use the currently selected GTK theme? Have you tried GTK in 1.5 to test it?
All one saves with Java is a compile step
After working for companies that build everything on Windows, Linux, Solaris, HP-UX, AIX, AS/400, etc.... I can't tell you how happy I am to only compile once. I no longer have to modify the makefile every time we try to build X or Y on platform Z... it really is a HUGE timesaver for the developer.
In addition, I have downloaded services for my BSD box (that were newer than the Port Collection), and been completely unable to figure out how to get them to compile properly, and fix the errors. Had they distributed it as a jar (especially over JNLP), I would not have had to go through all that hassles, and those services would be currently running.
On the other side, I believe performance will suffer, particularly on non-Windows platforms where the Sun VM is grotesquely slow.
I am not sure where you have been running it, but the Linux JDK on my 350MHz BSD box has no apparent speed problems at all. And I haven't even tried JDK 1.5 on BSD yet, which should be faster still.
Non-blocking I/O is indeed efficient but this feature is at least as easy to use in C.
How so? It is extremely easy to use in Java. I wrote a couple base classes (which I learned how to do originally from this article), and now all I have to do is call super() and call startServer(port).
On the flip side, I have done some select() work in C(not C++) and found that the behavior was inconsistent between the various platforms I mentioned above. Some of the functionality wasn't implemented on a couple of the platforms, and some of the functionality behaved completely different with Winsocks 2. It took me less time to write the NIO base classes for Java than to debug the s
For example it doesn't work well for people who have low bandwidth or inconsistent connections.
I can see that. So, really, what we need is a solution where an open-source OS (thus alleiviating their fear of M$ practices) could include it on the install disc?
as I understand it -- do correct me if I'm mistaken -- Swing is built on top of AWT
From the way I understand it, AWT uses Native Peers to talk to the OS, and that is why they are considered heavyweight. Swing uses actual drawing routines (pixels, shapes, etc) to draw the screens (which is why they can implement Theme options easily). However, at the VERY top level, there is an AWT component for the main window. The difference, I think, is that for Swing, that is the ONLY one. I could be wrong there.
Do you mean that the look and feel varies by platform? I consider that a good feature in principle since I prefer applications to be consistent across a desktop. Clearly that's a matter of taste though, and there's no accounting for it.
Well, with Swing, you have the option of your application looking the same on every platform, OR the option of your application looking like other native applications (to an extent on Windows). For Linux, however, they really do have great theme support, especially if you use the SkinL&F.
I usually find myself implementing lighweight components in AWT
I don't think that is technically possible. I believe using AWT components at all is considered heavyweight because of the way they interact with the OS. Many problems that people report with Swing is actually because the developer mixed AWT and Swing, and things get screwed up when overlayed. Really should not mix AWT (heavyweight) with Swing(lightweight).
but then I generally use HTML and forms backed by Python for everything they can support
Honestly, I usually use XML (and JAXB specifically) for all data -- local, remote, etc. I know a lot of people say XML adds a lot of complexity or whatever, but I find it extremely easy since I add one line to my ANT build script and I have OOP access to a specific XML format.
I suspect that if I were writing entire applications with Java I would grudgingly prefer Swing in spite of the look and feel issue.
I still don't understand. AWT is the one that looks really ugly, Swing has the look-n-feel/theming options.
Well, actually, I mean that the advantages of Java are not especially compelling for system software in general.
I disagree. I prefer writing all of my BSD software (and am in the process of replacing all my httpd, ftpd, sshd, smtpd, etc) in Java, because then I don't have to be tied to any specific OS. I write it on M$, copy-paste it to BSD, and email it to my friend running his Mac laptop. That is the most compelling reason anyone could choose any specific language. Especially since (with NIO) it seems to be extremely efficient.
A Write Once Run Anywhere kernel seems a bit nonsensical.
I am actually working on something like that, because I think that idea is the perfect solution. Make a Java-based OS on CDR(W), and run it on and i386, mac, ps2, dreamcast, etc. Much cheaper, in the long run, then writing a different kernel for each one. And definitely much easier to maintain and keep all versions up to date. Realistically, I haven't gotten very far yet, but I am working on putting a team together.
Similarly, running system daemons on top of a virtual machine seems unlikley improve anything.
Actually, the last time I was unemployed, I spent 2 weeks and wrote a NIO replacement for Apache (actually uninstalled Apache on my system after people 30 hops away told me mine was faster). Since I lost the code, I am currently rewriting it, and using JMX as the management interface (as a way to teach myself JMX) and find that performance is actually REALLY good, especially when using NIO.
software which communicates with a device over a U
...but Java (meaning the Java Developer Kit) is NOT Open Source. As a result, it is impossible to distribute it with any operating systems without obtaining some sort of permission from Sun. This is a real problem, especially for freely redistributable systems like Fedora and Debian.
Please explain this further. Debian should have absolutely no problems (even less than FreeBSD, who do distribute their own JDK), since Sun provides the Linux JDK for free. Are you saying that the problem is that they can not download it and put it on the Debian CD for redistribution? If that is the entire problem, why can't they do it like the BSD port system, where the makefile downloads the most recent one and installs it?
I am not clear why you prefer AWT. It is less efficient, uglier, etc. Swing doesn't have to be slow, and is cross-platform (the same hexagon widget is easy to implement regardless of platform).
All of the advantages of Java are application focused
That is not really true. I have the PTSC JavaChip (haven't gotten around to using it for anything). I also have a TINI board (currently running telnet, ftp, http) on the network. Since the Java chips are 32-bit with only 8-bit operands, they are able to grab 4 instructions and use 1 every clock cycle, unlike the Intel chips that regularly take 4 clock cycles to grab and use 1 instruction. In these examples, Java is great for the hardware.
Now, after writing that, I realize you said "application" not "software". Oops. What do you mean by this? Do you mean that it is no good for server software (which it is even better for than GUIs), or do you mean that it is not good for things like device drivers? If that is the case, I would recommend taking a look at the various JSRs and Sourceforge, you might find some things that suprise you... like USB drivers for Java. I do agree, however, that I would like a little more control over what I send over the network interface. Currently, unless it has recently changed, we are limited to TCP and UDP.... I would rather be able to construct a byte[] for an ICMP packet or something and send that. Not sure if there is any intention of allowing such a thing.
runtime exceptions please -- I loathe checked exceptions
You've REALLY got to be kidding. That is one of my biggest problems with Smalltalk! Let me explain my position as clearly as I can... Every single time you see any application crash in your OS, that is a runtime exception. Every single time you have decided not to use program X or program Y because it crashes all the time, you quit using that program because of runtime exceptions. Every runtime exception that a user runs into makes your application (and your development skills) look unprofessional and sloppy. If every single one of those were checked exceptions instead, then the user would at least be popped up some message that said there was a problem and to contact such-n-such. Or, click here to send the details to support. But, although you CAN catch runtime exceptions, the fact that they are not checked means that you wll most likely miss many of them. My point is this, runtime exceptions make your programming look sloppy, while checked exceptions prevent you from sending shoddy software to the customer.
An AWT backed by GTK+ would give my applications a consistent look of the sort I want.
Regarding the Swing/AWT + GTK. You say that, instead of using Swing + GTK (which you can currently do), you want them to make it possible for you to use GTK on AWT. You do realize that the act of doing that (besides not working very well because of the AWT being heavy components) would require that they add a Theme engine to AWT so that you COULD use the GTK. Basically, for them to add the functionality you want into AWT, they would pretty much have to rewrite Swing. If you are having problems with Swing applications have performance problems, then post your code on a Forum somewhere and ask everyone if there is some way to op
Not true. According to the FAQ, Sun has the same vote as the following:
Apache Software Foundation, Apple, BEA Systems, Borland, Caldera Systems, Cisco Systems, Compaq, Ericsson, Fujitsu Limited, HP, IBM, Insignia Solutions, IONA Technologies, Macromedia, Matsushita Electric Industrial (Panasonic), Motorola, Nokia, Oracle, PalmSource, Inc., Philips, RIM, Siemens AG, Sony, Texas Instruments, and Zucotto Wireless, as well as an individual participant, Doug Lea, representing the research and education communities.
Those are the EC seats. Sun just has a permanent seat on that board. The board (not Sun themselves) make the decisions about what gets added to Java, as per:
Sun, and the other Executive Committee (EC) members, serve as technology oversight groups for the work of the Expert Groups. The ECs do not micro-manage the day-to-day workings of Expert Groups. Rather, the ECs have the opportunity to review the work of each Expert Group at well-defined points as their specifications proceed through the JCP. The primary function of the ECs is to ensure that specifications do not overlap or conflict with one another and that the specifications meet the needs of the industry segment for which they are being written.
You can find a list of what is currently being added here. You can join (as an individual for free), or have someone who is a member, submit your own JSR (here's how) to be added to the language. If the board (again, not Sun) agrees that it does not conflict with other JSRs, then you put together your Expert Group. Information on how this procedure works can be found here. Here's their recommendation on the expert group YOU put together:
The Expert Group should be large enough to ensure reasonable industry representation and diversity of opinion.
If you really have an interest in all of this, I would recommend joining the JCP, previewing the proposed JCPs, voting on them, etc. I have joined, and plan on writing up some JSRs when I have some time.
When we investigated SWT, it was because SWT was supposed to look like all our other "Windows apps". But, in reality, it didn't. There were lots of differences, but the tabbed pane was the one that stood out the most. Upon looking at the Eclipse IDE (which I assume uses SWT?), management (and I) complained that it did not look like ANY other app on our system -- which is the only reason we were considering it. If you have experience of the apps looking like all the other windows apps, I would be interested in seeing some screen shots.
As far as the theme support for the platform, it is there for Motif (original Unix theme for Java), as well as GTK (Skin L&F). Not sure about KDE. The new XP look actually looks really good, and the JFileChooser actually has the sidebar that we have all been complaining about now.
As far as the system colors... I thought that was what it defaulted to when using the Windows look and feels? I could have swore the apps matched my coloring scheme. I will have to relook at that.
Ok, for all those people who keep talking about how Sun is running Java, and how it is closed source, please read this faq before posting anything further about it.
Three specific quotes:
Q: How many people are currently JCP members?
A: The JCP has over 500 company and individual participants.
Q: What prevents Sun from controlling or dominating the groups that develop and maintain Java specifications?
A: Sun, and the other Executive Committee (EC) members, serve as technology oversight groups for the work of the Expert Groups. The ECs do not micro-manage the day-to-day workings of Expert Groups. Rather, the ECs have the opportunity to review the work of each Expert Group at well-defined points as their specifications proceed through the JCP. The primary function of the ECs is to ensure that specifications do not overlap or conflict with one another and that the specifications meet the needs of the industry segment for which they are being written.
The following EC members elected by the community during the JCP EC Elections in October and November of 2001 took office on November 20, 2001: Apache Software Foundation, Apple, BEA Systems, Borland, Caldera Systems, Cisco Systems, Compaq, Ericsson, Fujitsu Limited, HP, IBM, Insignia Solutions, IONA Technologies, Macromedia, Matsushita Electric Industrial (Panasonic), Motorola, Nokia, Oracle, PalmSource, Inc., Philips, RIM, Siemens AG, Sony, Texas Instruments, and Zucotto Wireless, as well as an individual participant, Doug Lea, representing the research and education communities
I completely agree (with everything except SWT/Eclipse).
Everyone was talking about how Java is slow, and how it looks ugly, and we should do our app in VB.
My boss let me write it in Java anyways (with comments that if it did NOT perform well and look good, we might have to redo it in something else).
I passed it off to the guy doing the C++ remote server, and he was completely impressed with the looks and speed (yes, it was even Swing on Windows). I came into work the next morning to everyone congratulating me on a great UI, because evidentally it was shown off to everyone at the Pub the previous night.
The point is, there are a few problems of bad performance/look in Java UI... These are: 1) User is using an old version of Java, usually one that is end-of-lifed. 2) The coder wrote it in AWT 3) The coder wrote it in Swing, but without reading ANY of the documentation on Swing+Threads 4) The UI was patched & patched over and over, without designing it correctly first 5) The coder didn't utilize any look-n-feels 6) Bad threading design (ie: synchronizing when there is no need to, etc)
Is there anything that could be done better? Of course, otherwise there would be no one coding with the JCP. But, can you HONESTLY say any other language is completely perfect as-is?
I don't agree with your point about Eclipse/SWT though. I have a serious problem with needing to install any 3rd-party platform-specific java libraries... just goes against the whole concept of pure-Java, but then again, I am a purist. I also don't like the overall look of the SWT apps (some of the things like the disappearing Xs on the tabs annoy the hell out of me), and don't like the complexity that Eclipse adds to simple projects. I remember feeling the same way about JBuilder years ago, but to a lesser degree. Today, I write all my Java code in JCreator (or pico if I am logged into my BSD box), and use ANT to build with.
I am also tired of all the "Java-should-be-Open-Source" by people who have never bothered to spend 10 minutes looking into the JCP and how Java IS currently Open Source and how Java is NOT run exclusively by Sun anymore. Every couple days/weeks, I log onto Slashdot and someone else is making these presumptious claims without looking into the facts.
That's the theory... Between September and November, I was required to show it 6 times. Twice as the passport office, twice at my credit union, and twice at an escrow company.
Malachi
It isn't that they don't want to cooperate, but that (at least they feel) GPL doesn't give them the necessary freedoms TO cooperate. Sure, reinventing is a waste of my time and their money, but wouldn't it be better for the community (and even what they claim to be encouraging) if I were to make their product better for the whole community? The only reason I can't is because it is GPL instead of BSD or even LGPL. It hurts the open source community because they are getting less input and fixes than they would have had with ANY other license.
Why did you put "return to the community" in parenthesis? This is the *only* germane part of your argument.
It was an aside.
No amount of harm to you or your company counts when asking whether the GPL harms the free software community
The developers and companies would be willing to spend their time and money giving back to the community, but can't because they can't use GPLd software. The part that hurts the community, as in the previous section, is that they are forcing companies and people to turn away that would have helped out otherwise.
a company that forbids even *downloading* anything licensed under the GPL (an idiotic policy, by the way)
If I am writing a Grep utility, and I download (and thus possibly browse the source for) a GPLd version, I am breaking the spirit of the license, even if not the letter of the license, by using GPL ideas to write non-GPL code. Thus, companies (like Intel) have forbade me from downloading GPL software. It isn't that we can't download ANY GPL software, just none that has any similarity to anything that we are writing. And, to be honest, due to the spirit of the GPL, I think that is the right call -- the GPL community doesn't want their code, ANY of their code, to influence non-GPL code. You can correct me if I am wrong there.
Also, you are failing to distinguish between GPL applications and GPL libraries. Anyone willing to return improvements to the community should have no problem with the former. Do you admit that what you really despise is the use of the GPL for libraries and not the license itself?
It isn't always a library issue. For example, the Grep utility would be considered an application, not a library. Sure, I can improve grep for everyone -- but that doesn't help with the project I am being paid to write, since I could not link against it or anything (for say a Find button in the GUI). Since I can not use the grep application from the find button in my GUI, I am not about to download and wade through the source when I have other things I am required to do. Instead, I will have to write my own version (and thus REALLY don't want to download or wade through the original source).
When there are competing proprietary libraries they prefer the LGPL for exactly the reason you mentioned. Only when a library is unique and innovative do they recommend the GPL.
I understand that, but it isn't just libraries that logic applies to -- a'la Grep.
In such cases the loss of your potential improvements is probably made up for by the incentive this gives to more sane organizations to make their application free software.
What incentive? Even as an independant developer, I don't see that part of it.
Remember that helping people to create proprietary applications is not the goal of the free software community.
Yes, I agree. However, the "Open Source Community" these days seems to be more GPL vs. Non-GPL. It should not be that way. There are many non-GPL licenses that are considered Open Source, but the GPL movement discourages those (and even public domain) just as much as propriet
Yes, I can see that. It almost seems like a way to ensure that everyone DOES switch, if they prevent their own cards from being duplicated.
I have to admit, even with the various concerns I have (and the ones listed here), I pre-ordered.
Why? Because I have thought of designing something like this for myself in the past. Even though I no longer carry half my cards anymore (BiMart, et all), I somehow still manage to have WAY too many... Obviously, i could not replace my drivers license (no Mr. Officer, really, this is valid)... looking through my wallet while replying to this, I found 12 cards that I could easily get rid of. Wierd thing is, I thought there would be more, but 1/2 my cards wouldn't work with this (I think), like Social Security Card, OMMP, etc -- because there is no barcode/smartChip/magStripe/RFID on them. IF it was able to simply show me the front and back of any of my cards, like a jpg or something, then I could easily double the number I could get rid of. Of course, at that point, it would probably be really useful for all those damned business cards that manage to get into my wallet too.
Malachi
If you had read the article, you would know that isn't possible. Only your fingerprint can turn the device on, and the cards are only enabled for 10 minutes at a time.
So, to steal from you, someone would have to either use your card in that 10-minute window, or they would have to steal your fingerprint (which I admit, CAN be done).
Well, the problem is in the C code. The situations I have seen, they hard-code the location to load jvm.lib/dll from. In my experience, that was the reason they included Java at all, so they would know where to find that library. Unfortunately, however, if I am calling into their program, and it loads their archaic version of Java, some of the features my code might rely on may not exist yet. The problem was in the C code, though, not the Java code.
Back? Please consider what I actually wrote: Actually, if Sun does choose to release a free software virtual machine they will certainly use the GNU GPL or something like it.
Back, because discussions about "Open Sourcing Java" was what started this conversation.
Are you really unable to distinguish between the Object class and a virtual machine?
No, but the assumption is that they would have to OpenSource the core libraries as well as the VM itself.
As far as making Object GPL goes, you may be right that this would require derivative works to be released under a GPL compatible license (and you may be wrong, depending on how a court chooses to interpret a derivative work)
Even if a court chose to say otherwise, doesn't the whole concept that EVERYTHING extends Object (even if you don't do it explicitely) require GPL, by the Spirit of the GPL?
I doubt that Sun would do such a thing. More likely they would release the virtual machine under the GPL and the class libraries under the LGPL.
That, IMHO, would be a much more reasonable approach. I have nothing against the LGPL. Although, wouldn't LGPL allow two different vendors to have a DIFFERENT implementation of the Object class, perhaps with its own methods that only exist on their platform? That could break cross-platformability.
but your claim that this license hurts the open source community is completely preposterous
Since many companies have made me rewrite things because the current implementations were GPL (ie: reinvent the wheel), I claim this hurts the open source movement. Had those library been LGPL, for example, those companies would have allowed me to use and even improve upon (and return to the community) those libraries. Since they were GPL, we were not even allowed to download them. I can honestly say that I think the LGPL helps the community, but the GPL ensures that the same code gets rewritten over and over and over instead of being improved upon by those that can not use the GPL for one reason or another.
And by the way, how exactly do you reconcile despising the GPL while rallying to the defense of the much more restrictive license under which the Java virtual machine is currently distributed? That must be an interesting bit of mental gymnastics, and I'd like to know more about it.
Simple, I can license my Java programs under any license I want. The GPL restricts my rights to my own code -- the Java licenses do not. You say that they are more restrictive, but proof-in-point is that GPL puts restrictions on your Java program that Sun/Apache/etc do not. When I can do whatever the hell I want, I do not feel restricted.
Upgrading a platform does not have to make it unstable
If you look at the FreeBSD documentation, they explain that the reason they do not do lots of updates like Linux does is because sometimes those patches introduce problems, whereas BSD makes sure they don't before releasing them.
I never said Java was unusable, it just requires obnoxious steps like bundling a known good virtual machine version in some cases
I have never had to bundle a JVM with any software I have written. In fact, the last major software I did, the readme (html-based) had a link (JNLP) to launch the application, and a link to install the JRE if the JNLP link failed. But, I didn't have to include a JVM.
Linux is an excellent example. A c
I used to use SprintPCS for a few years, but got tired of them screwing me over. They kept charging me for calls that were never placed. They would show HUNDREDS of minutes more than my phone showed PER MONTH, and I never reset the counter on my phone. They even tried telling me that I was placing calls when I wasn't even in the area.
Finally, after complaining by phone and in person about 10 times (including contacting them with their in-store Corporate Phone a couple times, and writing them a letter on their own letterhead), I finally cancelled my service.
There is no way I am going back to them. They are complete crooks, IMHO, since they have ripped off everyone I know who has used their service. If I thought reporting them to the BBB would actually help, I would -- but it hasn't helped with the last two companies I reported.
Remote host said: 550 Invalid email address in MAIL FROM:my email removed for /. posting
Would you rather I had said this:
I don't use Document Type Definitions, but I do use Extensible Markup Language Schema Definitions for all of my document formats. There is a good link to learn the basics here.
I usually use Extensible Markup Language Schema Definitions with Java Advanced Programmer Interface for Extensible Markup Language Binding because it provides me with an Object-Oriented approach to reading/writing that specific format. There are also a couple projects to do that for C++ (Rogue Wave). Personally, I *love* Extensible Markup Language Data Binding, because I no longer have to deal with Document Object Model or Simple Advanced Programmer Interface for Extensible Markup Language.
Realistically, these acronymns are the only thing that make our posts even readable/understandable.
I can get into that menu (VX4400), but... any clue how to host a GetItNow server on BSD? Any clue what the GetItNow server IS? Is it just raw http? I have no clue.
I can send text, but not attach anything.
I tried sending it directly from Eudora, but the Detach Object is disabled.
So, I found the user manual online, and almost all of the advanced features say they are not implemented! How the hell can they sell phones based on features that aren't implemented???
Well, the problem there is the "choose to offer" bit. If they don't "choose to offer" your application, then no one can get access to it (including you).
;)
The other side of that is that all of the programs I *have* downloaded suck and crash all the time, so I am not sure I would want their seal of approval
I usually use XSD with JAXB (Java XML Bindings) because it provides me with an Object-Oriented approach to reading/writing that specific format. There are also a couple projects to do that for C++ (Rogue Wave). Personally, I *love* XML Data Binding, because I no longer have to deal with DOM or SAX.
I have no idea what the current Swing implementation does, as I don't run GTK. That's why I asked if you had yet tested it. What I thought it *might* be doing is something like SkinL&F, which, as I understand it, can read the GTK and KDE themes themselves, thus emulation should be completely accurate. I am not sure if that is what the Swing team did or not. I also am not sure if they have the JVM setup to use the default GTK theme, or the current one, since I am not using GTK myself. That is why I suggest you try it and see. It *might* do what you want *now*.
Consider a company that needs a prototype of a web application, for instance. A few simplistic Python scripts can be put together easily and will likely be more than fast enough to get the point across.
A few scripts might get the point across, but every time I have seen this situation, they stress tested the website to determine how well it would scale. Any time something needs to scale or get stress-tested, I can't believe launching processes is the best way.
Doing the same thing with Java is not likely to be a good idea, because the syntax is more complex, because there is a separate compile step (Python compiles to byte-code as it runs) and because performance is sure to be dire.
That would depend on the approach. Serlvets or JSP, perhaps. In my approach, I simply load a compile .class file. You COULD precompile the script (whenever the timestamp changes) automatically inside the server, thus getting the type of behavior you are expecting... Personally, I leave it at letting them run javac, as all Java developers are used to that -- but I agree, the web-app concepts all suck for distribution. That's why I am not using them in my server.
In my experience the overhead required to bring up a Java virtual machine is considerable
I am not having that experience on FreeBSD or WinXP. I can not attest to Linux speeds, but I am using the Linux JDK on my BSD box. I use Java for a lot of command-line stuff (sometimes using a batch file to launch it so I don't have to worry about where it or the supporting classpath are)... but I never have any speed problems. It launches, parses the command line, determines what to do, and can be done before my finger leaves the enter key.
What I was saying was that I think the Apache java mod was the problem... I mean, they did make one that is supposed to be A LOT faster, but I could never get it to compile.
These vendors want a JRE that they can depend on to behave predictably and whatever version you have on your system -- whether newer or older -- is considered too great a risk.
I understand these arguments, and have heard them many times from previous employers. The fact is, however, they complain about performance and bugs, but prefer to stick with one that is no longer being patched instead of using the one that fixes their issues. They should have at least 1 engineer that is able to test their system with the newer JDKs. I mean, realistically, it is a very stupid argument on their part - they spend a lot of money (billions, depending on the company) because tech support calls increase as people are using a newer version that doesn't work with their product. In my personal experience, the only problem (other than the 'assert' or 'enum' changes) is that they specifically create a JVM in JNI code, which breaks because the u
But, since Swing ALREADY has the GTK theme, I have to disagree that writing all the peers is any easier than calling a single line of code to switch themes.
I usually place my lightweight custom components inside an applet window and integrate them into a web application.
Hmmm.. I haven't done any applets or AWT for a couple years now. I always use Swing over JNLP. However, the key to my decision is the fact that AWT is always considered unacceptable in the looks department. If you need it embedded, I can understand using an Applet -- but otherwise, JNLP provides MUCH better performance (only updates jar-diffs if the jars have changed, instead of redownloading everything every time you hit the page). The apps I have been doing are Swing over JNLP -- and we have not had any speed problems. I can't speak to the overkill, as I think I would have to brush up on AWT to even remember how to do it.
The point I was trying to make is that this is *not* insane for all but the most demanding Python applications
I disagree. Starting a new process for every incoming request is insane regardless of language. Otherwise, Thread Pools wouldn't exist.
Python example suggests that much of the Java performance problem is due to poor virtual machine implementation rather than any fundamental flaw
I think it more likely that the Apache mod is the problem, rather than the Java VM. Pure java apps from the command-line seem to run very fast on both Windows and BSD. It is only from Apache that they seem slow.
I think you underestimate how much this kind of problem affects Java. Just try installing two or more major enterprise Java applications. Each will require a virtual machine from a specific and often mutually exclusive subset of vendors and version numbers.
Personally, I have installed a few different applications that installed their own JRE, and I submitted bug reports to those companies because A) They were installing JDK 1.2 when I already had 1.4.2 on my system; B) They were ILLEGALLY installing the JRE (which gets back to your original point). Of course, if they were using the Sun licensing correctly, their installer could have installed the newest JDK (or none at all since I had it installed already) instead of forcing me to install and end-of-lifed product.
As far as the enterprise software... I have installed a few of them, but none of them were pure-Java (WebSphere for example). The problem is that many of those Enterprise applications are being installed by big companies that have to have 100% control instead of doing 10 minutes of research to find the best way. JNLP is definitely the best Java solution for installs, but unfortunately very few big companies use it yet.
I think an open-source VM (not GPL, since they wouldn't use that) would not alleviate the problem you mention. Currently, the problem is that many times they include an end-of-lifed version of Sun's JVM. Making it so that they each have a slighty modified VM would definitely make this problem worse. IBM would have an extra opcode that no one else has, Oracle would have some pre-processing stuff that no one else has. It would more likely fracture the java stability instead of encouraging they all distribute the same thing. As an easy example, if they wanted to distribute Linux on their CD -- which would they use? RedHat? Slackware? Debian? Their own distro? I think you get my point.
Compare the sizes of the resident images, or use the "time" utiltiy (under Cygwin on Windows).
I am not sure what you are talking about with the "resident images", but using Cygwin is NOT the correct solution for measuring time on a Java platform. If you would like the correct source code to accurately measure how much time is taken on ANY platform, I can send you a copy of my class I wrote to test encryption/de
Swing implements GTK through com.sun.java.swing.plaf.gtk. I don't honestly know how difficult it would be to have the Swing team add the ability to ask the OS which theme is current, but it would probably be a hell of a lot easier than rewriting all the native peers to use AWT instead. They have been very responsive to my inquiries before, so I would highly recommend it if that is something you really want.
According to the API reference this creates a lightweight component with no native peer, much the way Swing does. A JButton is a subclass of java.awt.Component too.
Looking at the page you referenced, what it said was A lightweight component is a component that is not associated with a native opaque window. So, I guess the Component class itself is not associated with a Peer... utilizing any of the other AWT classes should cause it to be heavyweight. In fact, here's the list of AWT Peers from java.awt.peer in 1.5:
ButtonPeer,CanvasPeer,CheckboxMenuItemPeer,Checkbo xPeer,ChoicePeer,ComponentPeer,ContainerPeer,Dialo gPeer,FialDialogPeer,FontPeer,FramePeer,KeyboardFo cusManagerPeer,LabelPeer,LightweightPeer,ListPeer, MenuBarPeer,MenuComponentPeer,MenuItemPeer,MenuPee r,MouseInfoPeer,PanelPeer,PopupMenuPeer,RobotPeer, ScrollbarPeer,ScrollPanePeer,TextAreaPeer,TextComp onentPeer,TextFieldPeer,WindowPeer
Imagine invoking a new Java VM for every incomming web process!
I don't need to do that. I start up a couple threads/selectors for each port, but I have no need to start a new process or thread for each request. I did look into using some of the Apache java mods, but I couldn't get them to work right.
I meant that the look and feel doesn't match my desktop GTK+ theme as I mentioned above.
Swing can, if we can determine which one is current... then again, maybe the GTK theme in 1.5 DOES use the currently selected GTK theme? Have you tried GTK in 1.5 to test it?
All one saves with Java is a compile step
After working for companies that build everything on Windows, Linux, Solaris, HP-UX, AIX, AS/400, etc.... I can't tell you how happy I am to only compile once. I no longer have to modify the makefile every time we try to build X or Y on platform Z... it really is a HUGE timesaver for the developer.
In addition, I have downloaded services for my BSD box (that were newer than the Port Collection), and been completely unable to figure out how to get them to compile properly, and fix the errors. Had they distributed it as a jar (especially over JNLP), I would not have had to go through all that hassles, and those services would be currently running.
On the other side, I believe performance will suffer, particularly on non-Windows platforms where the Sun VM is grotesquely slow.
I am not sure where you have been running it, but the Linux JDK on my 350MHz BSD box has no apparent speed problems at all. And I haven't even tried JDK 1.5 on BSD yet, which should be faster still.
Non-blocking I/O is indeed efficient but this feature is at least as easy to use in C.
How so? It is extremely easy to use in Java. I wrote a couple base classes (which I learned how to do originally from this article), and now all I have to do is call super() and call startServer(port).
On the flip side, I have done some select() work in C(not C++) and found that the behavior was inconsistent between the various platforms I mentioned above. Some of the functionality wasn't implemented on a couple of the platforms, and some of the functionality behaved completely different with Winsocks 2. It took me less time to write the NIO base classes for Java than to debug the s
I can see that. So, really, what we need is a solution where an open-source OS (thus alleiviating their fear of M$ practices) could include it on the install disc?
as I understand it -- do correct me if I'm mistaken -- Swing is built on top of AWT
From the way I understand it, AWT uses Native Peers to talk to the OS, and that is why they are considered heavyweight. Swing uses actual drawing routines (pixels, shapes, etc) to draw the screens (which is why they can implement Theme options easily). However, at the VERY top level, there is an AWT component for the main window. The difference, I think, is that for Swing, that is the ONLY one. I could be wrong there.
Do you mean that the look and feel varies by platform? I consider that a good feature in principle since I prefer applications to be consistent across a desktop. Clearly that's a matter of taste though, and there's no accounting for it.
Well, with Swing, you have the option of your application looking the same on every platform, OR the option of your application looking like other native applications (to an extent on Windows). For Linux, however, they really do have great theme support, especially if you use the SkinL&F.
I usually find myself implementing lighweight components in AWT
I don't think that is technically possible. I believe using AWT components at all is considered heavyweight because of the way they interact with the OS. Many problems that people report with Swing is actually because the developer mixed AWT and Swing, and things get screwed up when overlayed. Really should not mix AWT (heavyweight) with Swing(lightweight).
but then I generally use HTML and forms backed by Python for everything they can support
Honestly, I usually use XML (and JAXB specifically) for all data -- local, remote, etc. I know a lot of people say XML adds a lot of complexity or whatever, but I find it extremely easy since I add one line to my ANT build script and I have OOP access to a specific XML format.
I suspect that if I were writing entire applications with Java I would grudgingly prefer Swing in spite of the look and feel issue.
I still don't understand. AWT is the one that looks really ugly, Swing has the look-n-feel/theming options.
Well, actually, I mean that the advantages of Java are not especially compelling for system software in general.
I disagree. I prefer writing all of my BSD software (and am in the process of replacing all my httpd, ftpd, sshd, smtpd, etc) in Java, because then I don't have to be tied to any specific OS. I write it on M$, copy-paste it to BSD, and email it to my friend running his Mac laptop. That is the most compelling reason anyone could choose any specific language. Especially since (with NIO) it seems to be extremely efficient.
A Write Once Run Anywhere kernel seems a bit nonsensical.
I am actually working on something like that, because I think that idea is the perfect solution. Make a Java-based OS on CDR(W), and run it on and i386, mac, ps2, dreamcast, etc. Much cheaper, in the long run, then writing a different kernel for each one. And definitely much easier to maintain and keep all versions up to date. Realistically, I haven't gotten very far yet, but I am working on putting a team together.
Similarly, running system daemons on top of a virtual machine seems unlikley improve anything.
Actually, the last time I was unemployed, I spent 2 weeks and wrote a NIO replacement for Apache (actually uninstalled Apache on my system after people 30 hops away told me mine was faster). Since I lost the code, I am currently rewriting it, and using JMX as the management interface (as a way to teach myself JMX) and find that performance is actually REALLY good, especially when using NIO.
software which communicates with a device over a U
November 2003 Election Results.
Please explain this further. Debian should have absolutely no problems (even less than FreeBSD, who do distribute their own JDK), since Sun provides the Linux JDK for free. Are you saying that the problem is that they can not download it and put it on the Debian CD for redistribution? If that is the entire problem, why can't they do it like the BSD port system, where the makefile downloads the most recent one and installs it?
I am not clear why you prefer AWT. It is less efficient, uglier, etc. Swing doesn't have to be slow, and is cross-platform (the same hexagon widget is easy to implement regardless of platform).
All of the advantages of Java are application focused
That is not really true. I have the PTSC JavaChip (haven't gotten around to using it for anything). I also have a TINI board (currently running telnet, ftp, http) on the network. Since the Java chips are 32-bit with only 8-bit operands, they are able to grab 4 instructions and use 1 every clock cycle, unlike the Intel chips that regularly take 4 clock cycles to grab and use 1 instruction. In these examples, Java is great for the hardware.
Now, after writing that, I realize you said "application" not "software". Oops. What do you mean by this? Do you mean that it is no good for server software (which it is even better for than GUIs), or do you mean that it is not good for things like device drivers? If that is the case, I would recommend taking a look at the various JSRs and Sourceforge, you might find some things that suprise you... like USB drivers for Java. I do agree, however, that I would like a little more control over what I send over the network interface. Currently, unless it has recently changed, we are limited to TCP and UDP.... I would rather be able to construct a byte[] for an ICMP packet or something and send that. Not sure if there is any intention of allowing such a thing.
runtime exceptions please -- I loathe checked exceptions
You've REALLY got to be kidding. That is one of my biggest problems with Smalltalk! Let me explain my position as clearly as I can... Every single time you see any application crash in your OS, that is a runtime exception. Every single time you have decided not to use program X or program Y because it crashes all the time, you quit using that program because of runtime exceptions. Every runtime exception that a user runs into makes your application (and your development skills) look unprofessional and sloppy. If every single one of those were checked exceptions instead, then the user would at least be popped up some message that said there was a problem and to contact such-n-such. Or, click here to send the details to support. But, although you CAN catch runtime exceptions, the fact that they are not checked means that you wll most likely miss many of them. My point is this, runtime exceptions make your programming look sloppy, while checked exceptions prevent you from sending shoddy software to the customer.
An AWT backed by GTK+ would give my applications a consistent look of the sort I want.
Regarding the Swing/AWT + GTK. You say that, instead of using Swing + GTK (which you can currently do), you want them to make it possible for you to use GTK on AWT. You do realize that the act of doing that (besides not working very well because of the AWT being heavy components) would require that they add a Theme engine to AWT so that you COULD use the GTK. Basically, for them to add the functionality you want into AWT, they would pretty much have to rewrite Swing. If you are having problems with Swing applications have performance problems, then post your code on a Forum somewhere and ask everyone if there is some way to op
Apache Software Foundation, Apple, BEA Systems, Borland, Caldera Systems, Cisco Systems, Compaq, Ericsson, Fujitsu Limited, HP, IBM, Insignia Solutions, IONA Technologies, Macromedia, Matsushita Electric Industrial (Panasonic), Motorola, Nokia, Oracle, PalmSource, Inc., Philips, RIM, Siemens AG, Sony, Texas Instruments, and Zucotto Wireless, as well as an individual participant, Doug Lea, representing the research and education communities.
Those are the EC seats. Sun just has a permanent seat on that board. The board (not Sun themselves) make the decisions about what gets added to Java, as per:
Sun, and the other Executive Committee (EC) members, serve as technology oversight groups for the work of the Expert Groups. The ECs do not micro-manage the day-to-day workings of Expert Groups. Rather, the ECs have the opportunity to review the work of each Expert Group at well-defined points as their specifications proceed through the JCP. The primary function of the ECs is to ensure that specifications do not overlap or conflict with one another and that the specifications meet the needs of the industry segment for which they are being written.
You can find a list of what is currently being added here. You can join (as an individual for free), or have someone who is a member, submit your own JSR (here's how) to be added to the language. If the board (again, not Sun) agrees that it does not conflict with other JSRs, then you put together your Expert Group. Information on how this procedure works can be found here. Here's their recommendation on the expert group YOU put together:
The Expert Group should be large enough to ensure reasonable industry representation and diversity of opinion.
If you really have an interest in all of this, I would recommend joining the JCP, previewing the proposed JCPs, voting on them, etc. I have joined, and plan on writing up some JSRs when I have some time.
If I remember right, the reason that Sun did not make Java an ECMA standard was because Microsoft was on the ECMA board.
Honestly, with their business practices, I wouldn't want to submit my designs to anything Micro$oft has a hand it. Would you?
When we investigated SWT, it was because SWT was supposed to look like all our other "Windows apps". But, in reality, it didn't. There were lots of differences, but the tabbed pane was the one that stood out the most. Upon looking at the Eclipse IDE (which I assume uses SWT?), management (and I) complained that it did not look like ANY other app on our system -- which is the only reason we were considering it. If you have experience of the apps looking like all the other windows apps, I would be interested in seeing some screen shots.
As far as the theme support for the platform, it is there for Motif (original Unix theme for Java), as well as GTK (Skin L&F). Not sure about KDE. The new XP look actually looks really good, and the JFileChooser actually has the sidebar that we have all been complaining about now.
As far as the system colors... I thought that was what it defaulted to when using the Windows look and feels? I could have swore the apps matched my coloring scheme. I will have to relook at that.
Three specific quotes:
Q: How many people are currently JCP members?
A: The JCP has over 500 company and individual participants.
Q: What prevents Sun from controlling or dominating the groups that develop and maintain Java specifications?
A: Sun, and the other Executive Committee (EC) members, serve as technology oversight groups for the work of the Expert Groups. The ECs do not micro-manage the day-to-day workings of Expert Groups. Rather, the ECs have the opportunity to review the work of each Expert Group at well-defined points as their specifications proceed through the JCP. The primary function of the ECs is to ensure that specifications do not overlap or conflict with one another and that the specifications meet the needs of the industry segment for which they are being written.
The following EC members elected by the community during the JCP EC Elections in October and November of 2001 took office on November 20, 2001: Apache Software Foundation, Apple, BEA Systems, Borland, Caldera Systems, Cisco Systems, Compaq, Ericsson, Fujitsu Limited, HP, IBM, Insignia Solutions, IONA Technologies, Macromedia, Matsushita Electric Industrial (Panasonic), Motorola, Nokia, Oracle, PalmSource, Inc., Philips, RIM, Siemens AG, Sony, Texas Instruments, and Zucotto Wireless, as well as an individual participant, Doug Lea, representing the research and education communities
I completely agree (with everything except SWT/Eclipse).
Everyone was talking about how Java is slow, and how it looks ugly, and we should do our app in VB.
My boss let me write it in Java anyways (with comments that if it did NOT perform well and look good, we might have to redo it in something else).
I passed it off to the guy doing the C++ remote server, and he was completely impressed with the looks and speed (yes, it was even Swing on Windows). I came into work the next morning to everyone congratulating me on a great UI, because evidentally it was shown off to everyone at the Pub the previous night.
The point is, there are a few problems of bad performance/look in Java UI... These are:
1) User is using an old version of Java, usually one that is end-of-lifed.
2) The coder wrote it in AWT
3) The coder wrote it in Swing, but without reading ANY of the documentation on Swing+Threads
4) The UI was patched & patched over and over, without designing it correctly first
5) The coder didn't utilize any look-n-feels
6) Bad threading design (ie: synchronizing when there is no need to, etc)
Is there anything that could be done better? Of course, otherwise there would be no one coding with the JCP. But, can you HONESTLY say any other language is completely perfect as-is?
I don't agree with your point about Eclipse/SWT though. I have a serious problem with needing to install any 3rd-party platform-specific java libraries... just goes against the whole concept of pure-Java, but then again, I am a purist. I also don't like the overall look of the SWT apps (some of the things like the disappearing Xs on the tabs annoy the hell out of me), and don't like the complexity that Eclipse adds to simple projects. I remember feeling the same way about JBuilder years ago, but to a lesser degree. Today, I write all my Java code in JCreator (or pico if I am logged into my BSD box), and use ANT to build with.
I am also tired of all the "Java-should-be-Open-Source" by people who have never bothered to spend 10 minutes looking into the JCP and how Java IS currently Open Source and how Java is NOT run exclusively by Sun anymore. Every couple days/weeks, I log onto Slashdot and someone else is making these presumptious claims without looking into the facts.
Just my 2 cents
Thanks for the link, it did a pretty good job. I had tried babelfish first, but it doesn't seem to work anymore.
Malachi