Fog Creek Software
Discussion Board




Cast Iron

Would you buy cast iron gardening tools?

I wouldn't.

Why? Because they break. They always break. So what if they are cheaper to make. They just aren't as strong as forged steel. So, I pay $25 for grass cutters, but they will last forever. The alternative is to pay $5 once a year forever and keep disposing of broken cast iron ones.

Today I installed the 2003 Encycropedia Britannica. The installer crashed during the install -- it couldn't find the files it needed for a complete install. So I went for the abbreviated install, the one where you still need to put the cd in to see anything.

On every single page is an advertisement suggesting you upgrade to the new, better version.

Tried the videos -- you can click on the titles but nothing happens. No video. Apparently, they didn't even test this CD.

Needless to say, this is the 2003 release and I have all up to date components in the OS and a computer less than a year old.

Poked around in the files on CD and I could see that this app was written in java.

Well that explains it.

I know the java freaks will protest but the fact is that I have never seen a robust stable java application. Never. ANd I've seen a lot.

i say java is cast icon. It's cheap shit. It ain't even worth having.

Sure, go ahead and post all your marvelous examples of robust java. It's all veneer -- all a cheap facade. Try to put it through the paces or install it on anything except a finely tuned and particularly configured system and it falls flat on it's face.

Sure, there's bad software in every language. But ovory application in java is slow unreliable, fussy and fragile. Can't all be the programmers fault. Must be the language.

C and Perl seem pretty stable though. I'll stick with them. THey let me get things done.

And when buying software -- just let me know what it's made of before I plunk down the cash.

I'm tired of wasting my time with cheap junk. Maybe someday java will clean up it's act. But I for one just don't care anymore. I'm not spending money on cast iron tools ever again.

Dennis Atkins
Monday, October 13, 2003

It's hard to write robust software in any language.

In Java I find it a pain in the ass to manage environment things, such as locations of files and the VM and such.

In C I find it a pain in the ass to try to write code that handles errors cleanly, what with if-else blocks or gotos all over.

In C++ I find it a pain in the ass to try to write good code because it has more dark corners than any other language I've ever seen (and if you disagree, go read the Meyer book).

In PHP I find it hard to write good software because I'm stuck on a damned web server and state and session is a pain in the ass.

No silver bullet, friend.

Mike Swieton
Monday, October 13, 2003

By the way, cast iron may be bad for gardening tools, but cast iron has a place in cookware for skillets that nothing will ever replace.

Mike Swieton
Monday, October 13, 2003

What if all those Java apps are bad because the companies writing them swallowed lots of hype and hired inexperienced programmers?  So it's not the platform but something about the types of companies who jumped on the desktop Java bandwagon?

A developer can write Java apps that work.  There is nothing in Java that stops you from drawing a window with buttons that do stuff.  Maybe it's too easy so everyone off the street writes them.

visual ted
Monday, October 13, 2003

Dennis,

It shows that you are disappointed about your purchase but have you talked to your vendor about this? If you are running this on an Windows machine, I would check the version of Java that is installed. Microsoft and Sun heave been fighting over Java for years and right now MS has been so 'kind' to include an obsolete and botched version of their own Java Virtual Machine with Windows.

As for the general gist of your remakrs: I find the opposite is true, but that might depend on what you and I have seen so far. I'm mainly doing server applications and in that field Java is a very easy to use and robust language/platform. I think writing Win32 GUI apps in Java is not a very smart choice, there are much better choices for that area.

However, if you would follow your own logic you might hate C as much as you do Java. Almost every blue screen in Windows and I still see them from time to time in Win 2K seems to be caused by those pesky C errors that still haunt us after all thses years.

My point: use the best tool for the job. Java excels on a server platform, but is not very good at GUI apps.

Jeroen
Monday, October 13, 2003

I second Dennis on this. Let's state the obvious, for it's true. Java applications are bloat pieces that always need tedious hand-holding and often lots of extra garbage too.

I've come to the conclusion that this is part of something deeper. A certain type of bang-it-together developer gets attracted to Java. They get high on all the rigmarole and expect their users to just suffer. This attitude only works for internal applications in corporates or universities, and that of course is where Java hangs out.

This is not to say there aren't good things about Java, and some good Java developers. But there are lots of Java developers who are not good but think they are.

JM
Monday, October 13, 2003

Just as there are lots of

[insert C++/C#/VB/Delphi/Lisp/Python/PHP/Lingo/Cola/Visual Fred as applicable]

developers who are not good but think they are.

John Topley (www.johntopley.com)
Monday, October 13, 2003

After not having encountered a BSOD in the last 4 years, last week I had to install this program that absolutely needed the Sun Java VM. This thing is running, can we say sloooooowwwwwwlllyyyyyy, so I hit CTRL+ALT+DEL to bring up taskmanager to see wether it is processor bound, and "ping" BSOD!

Just me (Sir to you)
Monday, October 13, 2003

IT is a very hype-driven industry.

So, Sun managed to get a mega-hype around Java, and that's why it's shaven down our throats now.

JX
Monday, October 13, 2003

Java bashing weeks at JOS? Cool.

Slashnot
Monday, October 13, 2003

Yesterday my car broke. It's something with the micro electronics. Cars are such a bloat of hardware. I will ride a bike in the future. It's fast enough, easy to handle, and needs no fuel.

Johnny Bravo
Monday, October 13, 2003

In my opinion the installer and software that comes along with the encyclopedia is bad, because it doesn't behave as one expects. But I see no point to blame a technology like Java, even i don't like  as well.
Especially on server side it's propably the worst thing that could happen. Serversoftware has to be very efficient and
so, there simply is no replacement for a good C or C++ compiler, making the best binary that perform best. A thing that's nowadays seems to be forgotten is, that C and C++ are platform independent by standard.
I guess using C++ and ACE http://www.cs.wustl.edu/~schmidt/ACE.html is the best foundation for server software. And if it's getting bigger, the TAO  ORB http://www.cs.wustl.edu/~schmidt/TAO.html should be sufficient for any server application.

Michael Bruckmeier
Monday, October 13, 2003

> Serversoftware has to be very efficient

Where did you get that idea?

Servers spend most of their time waiting for databases to return data. Raw performance (eg, the ability to crunch numbers, parse strings quickly, etc) is not anywhere near as important as the ability to write high-level  business logic.

C++ is a miserable choice for servers. J2EE is going strong for exactly this reason: there's lots of work porting those old monoliths that are hard to extend and crash way too often. And lest you think me a language bigot, C# and .NET will be there very soon too.

This thread is bogus, unless it's yet another example of Sturgeon's Law in action. There's plenty of good Java code out there, and pointing at bad code doesn't magically invalidate the good code *or* the language.

Portabella
Monday, October 13, 2003

Sorry, but both of your arguments are bad. A DBMS is serversoftware. Curiously most of them are written using C++.
Your second argument is comparing apples with trees. C++ is a language and J2EE is an architecture or somewhat called framework.

Michael Bruckmeier
Monday, October 13, 2003

>  both of your arguments are bad

Only because you're interpreting them in such a tortured way.

I used "server software" as shorthand for "server-side business logic".  This is, I believe, the common usage.

You are also using it to mean server-side platforms like databases, transaction managers, message queue systems and the like.

And you're right: a lot of these are written in C/C++. Performance does matter at this level, and these systems are generally built by companies with the resources to do them stringently and correctly, *because their revenue depends on doing them right*.

These things are not the case for server-side business logic (eg, internal applications for banks and investment trading companies), and SSBL outnumbers platforms by 100 to 1, or more.

These definitions made, I'll reiterate: Java excels at SSBL (*). C++ is miserable for it.

* It's not the only language that does, just the one that's most popular right now

Portabella
Monday, October 13, 2003

Whenever I see something is going to require Java, I just groan and know that I'm going to be in for slow unreliable performance. Oh, thats regardless of what JVM I use.

Maybe its the types of apps I tend to see but all the ones written in Java are really poor because they are so slow they are unusable or they are so unreliable they are unusable.

So I'm sorry, but I don't believe in Java at all. The sooner it falls off the map the happier I'll be.

Robert Moir
Monday, October 13, 2003

"I don't believe in Java at all. The sooner it falls off the map the happier I'll be"
Bit of a bugger for people who live there though, won't it?


Monday, October 13, 2003

> Maybe its the types of apps I tend to see

Like Web applications? The home banking application that I use is Java; I can even see the .jsps in the URLs. Not much of a speed problem there.

I've seen some real clunky client-side Java applications too, but on the server-side no problemo.

Portabella
Monday, October 13, 2003

It might be a very long time before Java will fade out of usage. Nearly every vendor of 'server software' has embraced Java, the only exception being Microsoft. And let's be fair, there is more than a vague resemblance between .Net and J2EE. Microsoft has looked at J2EE and has embraced some of the ideas.

In  the years to come these will be the dominant platforms to deliver server functionality.

In that way Java has been very succesful, if imitation is the sincerest form of flattery. Let's face it, all users care about is functionality. J2EE and .Net deliver tremendous amounts of plumbing for serious applications and are very attractive environments to work in as a developer.

As far as Java being slow: yes, Swing is slow. Java in a server environment is fast, or at least fast enough. The J2EE marketplace has a lot of competition right now and the price/quality ration of the software is rapidly improving. One of the nice things about it is that yoiu can get a very decent environment for ZERO licensing costs. Linux, JBoss, MySQL and Eclipse can all be had for free and work well.

My main gruipe about the Windows software world is that you automatically get locked in to whatever Microsoft decides is good for you (and their cashflow). This leaves users with very little choice if things are not working out. This is mainly visible in the security arena where Microsoft still fall short of the mark, despite all the promises of 'it will be safe, trust us'.

Having multiple vendors keeps up the pressure to constantly improve the software. Having open source competitors forces companies to be much better so they can justify the price of their software.

So what was  this thread about? :)

Jeroen
Monday, October 13, 2003

> And let's be fair, there is more than a vague resemblance between .Net and J2EE.

I think the important point is that, with .Net, Microsoft has gone the extra yards to make it smooth and reliable for users, as they always do. That's what Sun never got.

JM
Monday, October 13, 2003

It is easy to say "Java is bad". Heck, it is even almost as easy as saying "Windows is bad". Because I think most everybody has encountered a slow Java app or Windows crashing.

What's the difference? Well, the last is saying that a product (O/S) is bad. The first -- that a language (and/or its implementation arguably) is bad.

That's pretty much of a claim, based on (let me know if I am wrong, I am making an estimate here) 4-5 occasions with programs written by god-knows-whom.

Hmm. I wonder if I write a sloppy .NET program, can I lay the blame with .NET?

Java, to this date, is the only (semi-)compiled language, applications in which run without modification on any O/S, and on any hardware, which has Java support.

Doesn't sound too impressive? Just try doing it with any other language. Anything that produces .exe will be a pain.

Anything that doesn't (produce an .exe), will lack the enterprise features that Java has.

Emil
Monday, October 13, 2003

In defense of cast iron, I'd like to point out that it's incredibly useful for woodworking machines, including table saws, jointers, band saws, planers and the like.  The table on these tools is made of cast iron, polished to a nice shine.  Very heavy and very stable.

In other words, the coolness of cast iron varies in how it is used.  It may be cheap in garden tools, but it's a mark of quality in woodworking machines.

Similarly, I'm sure Java has it's place, although I can't say that I've found it yet.

Eric Sink
Monday, October 13, 2003

> I think the important point is that, with .Net, Microsoft has gone the extra yards to make it smooth and reliable for users, as they always do. That's what Sun never got.

Sun did a great job of making J2EE attractive for major 3rd party vendors, as someone earlier in the thread mentioned.  Microsoft has rarely done that; they prefer the "one big shark and lots of little remoras" model.

That by itself is a huge benefit of J2EE.

Sun pushed Java out the door as fast as they could, and it created some brain damage that will most likely never be fixed (see for example, the "immutable Date class" thread).

Om the other hand, Microsoft arguably missed a huge opportunity by not launching C# faster and thereby allowing Java to become entrenched.

Meta-comment: I'm not sure how much of the discussion here is serious, and how much is just bashing. There's nothing wrong with venting, but please don't expect me to take blanket comments like "Java sucks" seriously.  I'm interested in software engineering and understanding where the IT industry is going, not poorly dressed up hostility. And bluntly, you folks are a whole lot less funny than the BileBlog.

Portabella
Monday, October 13, 2003

Britannica has always had lousy software.

I remembered that to install an earlier version (the 2000 version) you had to play around with your proxy settings in Internet Explorer. And then the script had bugs; until I turned of the WDM (which Office 2000 installed automatically with sometning or other in a fit of geek madness) I couldn't get it to run at all.

And it was ages before Britannica's programmers got round to learning how to get the window to resize for any settings.

It's no wonder Encarta wins; the opposition is simply clueless.

Incidentally, I back up the recommendation for cast-iron cookware. It has excellent heart dissipation qualities and costs a hell of a lot less than copper.

Stephen Jones
Monday, October 13, 2003

“Incidentally, I back up the recommendation for cast-iron cookware”

… but only if one seasons the cookware correctly.

19th floor
Monday, October 13, 2003

I love my cast iron cookware. Just don't use it for gardening.

pdq
Monday, October 13, 2003

I've seen a disproportional number of buggy Java apps and applets as well.  I've wondered why this is but don't know enough about Java to make an educated guess. 

Some theories:
1. Something is seriously wrong with Java that makes it hard to write reliable code.
2. Java makes it easier for bad programmers to get further in writing software than other languages.  The result is lots of seemingly functional software that's lacking in performance and reliability. 
3. The versioning of Java runtimes makes it easy to introduce incompatibilities.  The problem with this theory is that it's not unusual to see errors on JSP pages where presumably the developers are smart enough to use the same runtime for development and production. 

SomeBody
Monday, October 13, 2003

regarding cookware:

Yes absolutely, a cast iron skillet is indispensible for making cornbread and makes a mighty fine bargaining tool.

I have three and a cooking pot as well and swear by them. They don't have a tendency to shed toxic chemicals like the 'nonstick' ones and they are MUCH more nonstick than nonstick skillets anyway.

* Dry them immediately after washing and never use soap -- always use plain water.
* Season and reseason periodically to keep up the 'nonstick' properties.

They last FOREVER.

Have not had good luck with chinese brands though -- the handles tend to break. Apparently there is more than one way to make cast iron and some is stronger than others.

Shop tools:
Yes, of course. I have american and modern taiwanese brands - a 6" joiner, 14" bandsaw, drillpress, and cabinetmakers table saw. All have plenty of cast icon and the weight does a great job of preventing rattling. Again, stay away from the current chinese made ones that are sold in these tool trucks that circle the country with brands you've never heard of at cut-throat rates. You'll save a dime and lose a finger.

Matter at hand:
Perhaps server software is to java as the skillet is to cast iron. This seems reasonable since the programmer is running a single copy of the software himself and has complete control over the environment and the virtual machine version and so forth. However, there are plenty of kiosks, billboards, and airport schedule display computers that are crashing while running java and they are running under very particularly specified hardware and are developed at very high costs, so that makes me a bit skeptical of the server claims.

I do know Java, though I haven't kept up with it. I have a fondness for its syntax and architecture, though not for it's garbage collector, it's proprietary-ness, it's implementation flaws nor it's apparently moving-target implementation. Also it's thread behavior is wildly different depending on what platform or even browser it's running on, making a responsive GUI very hard to implement.

For software to be distributed to an arbitrary machine, it seems an utter failure, despite teh large improvements they've made in making a nice looking GUI possible on multiplatforms.

For multiplatform GUI software, wxWindows is probably the easiest way to go. It's still a bit fussy but you at least have the source code and so you can fix it.

If performance is an issue and you need multiplatform, every wildly successfull major software vendor going this route (ie: Adobe) seems to have developed their own personal multiplatform compatible framework, the quality of which determines their fortune and is their secret weapon.

I don't know the problems that make Java so unstable. In the Britannica case, I suspect it is a particular flaw in the JVM which is technically not Britannica's fault, but actually is since they should have tested it on various platforms. Then again, the fact thaht working software breaks when the JVM is updated seems madness to me. If you update your C compiler, your old executables in distribution don't suddenly break.

The big picture here is that there is a LOT that can go wrong with any particular software. There is NO single point of failure. But... if there are too many things that can easily go wrong and the odds of each are finite, the cumulative effect becomes disasterous.

With C, you have programmer errors and you have DLLs changing and you have the OS possibly changing to become incompatible. But you don't have instabilities in the language, badly implemented library functions and an extra VM layer that can cause disaster. These few 'extra' problems, many of which are outside the control of the developer, are just enough to be the straw that breaks the camel's back and pushes Java over to the realm of unreliable and unsuitable.

Dennis Atkins
Monday, October 13, 2003

Eric,

This isn't meant as a dig, but out of curiosity do you think you could have gotten the Vault command line interface for Unix done quicker in java than by porting parts of .Net to Unix? 

I find that surprising. 

Maybe the gain was in reusing your C# code. 

Personally I think Java never met its potential, and I blame Sun for that.  Tomcat is a decent server, but Sun should have built and sold a great one.  I think not doing this has cost them the company.

You have to admit .Net has taken a lot of great ideas from Java. 

I've always liked java, but find myself using it less and less now that there are great cross platform libraries for C++ such as ACE and wxWindows.  I stay away from .net for most of my work primarily because the run time is huge, and there is no good cross platform story.  Maybe that will change some day. 

I've never used Java on the client, and probably never will. 


http://www.summitsage.com/

christopher baus (tahoe, nv)
Monday, October 13, 2003

> Then again, the fact thaht working software breaks when the JVM is updated seems madness to me. If you update your C compiler, your old executables in distribution don't suddenly break.

They don't break when you update the Java compiler either.

On the other hand, try upgrading the Perl *interpreter* sometime and run old scripts. Most will work, but some won't (I've actually done this).

> are just enough to be the straw that breaks the camel's back

Sorry. This is opinion asserted as fact, buttressed by selective evidence.

Should I point to all the PHP errors I've seen, all the ASP/ODBC problems I've encountered, etc as proof that these technologies "don't work"?

Portabella
Monday, October 13, 2003

My facetious comment meant to say that you should use the right tool for the job.

For anything more complicated than a game or web applet, I've never seen Java work particularly well. One of the worst offenders that I've run across is the Oracle manament tools and the installer. They suck on windows. Now they may suck identically on all platforms which would be a feature, but they don't stand up to windows specific apps written in anything else.

pdq
Monday, October 13, 2003

>>
Should I point to all the PHP errors I've seen, all the ASP/ODBC problems I've encountered, etc as proof that these technologies "don't work"?
<<

Whoever said that no errors occur in any other language?  The point is that a DISPROPORTIONAL number of errors seem to occur with Java. 

I haven't done a scientific study to verify that Java code tends to be buggier than other popular languages but it's gotten to the point where I cringe on a subconscious level whenever I see Java.  I don't cringe when I see PHP or ASP. 

SomeBody
Monday, October 13, 2003

> I haven't done a scientific study

I know. That's why this thread is so bogus.

"You can write bad code in any language".

Portabella
Monday, October 13, 2003

You can write bad code in any language true, we've all seen some examples of it, but its easier to produce functional but bad code in some than it is others.

Plenty of people consider basic a bad language because it panders to bad habits. Why can't we consider Java the same way based on the quality of output that we've seen (which as I've said before in my case the output I've seen is poor).

Robert Moir
Tuesday, October 14, 2003


> Why can't we consider Java the same way based on the quality of output that we've seen

So when a C++ application dies without a murmur, or core dumps, or has to be automatically restarted several times a day (all of which I've seen), this doesn't relect badly on the language, but when you see a Java stack trace, it does?

> Plenty of people consider basic a bad language because it panders to bad habits.

It sounds like the "bad habit" is that trying-to-be-informative stack trace instead of silent death.

Portabella
Tuesday, October 14, 2003

Pportabella, you need a more modern something. Every C and C++ program I've seen leaves a stack trace behind when it crashes.

Tony Chang
Tuesday, October 14, 2003

*  Recent Topics

*  Fog Creek Home