yourfanat wrote: I am using another tool for Oracle developers - dbForge Studio for Oracle. This IDE has lots of usefull features, among them: oracle designer, code competion and formatter, query builder, debugger, profiler, erxport/import, reports and many others. The latest version supports Oracle 12C. More information here.
In many cases, the end of the year gives you time to step back and take stock of the last 12 months. This is when many of us take a hard look at what worked and what did not, complete performance reviews, and formulate plans for the coming year. For me, it is all of those things plus a time when I u...
Paul Graham's Great Hackers essay has really touched a lot of people's nerves. The wires are choked with people giving their point of view.
Yet again, though, I have had to stop and think - what is it about Java that makes people brand it as the most un-cool language on earth? I have had friends look at me like I was a poor sod for "having to" develop in Java. So, let me list all the reasons I can think why people consider Java un-cool.
Java has considerably fewer surprises and prefers not to add complexity to the language for rarely used features thereby resulting in a language where you cannot really make your friends go ga-ga at amazingly brief programming constructs. You need to write something substantial [like Gosling's Huckster] for them be to impressed with your programming abilities and not your language knowledge. This is probably the biggest reason Java is un-cool. It's too easy (although programming or software development remains as tough as ever). Java was always touted as the language that the "average" IT programmer can use. It's such a language-for-the-masses that yet again, it fails the "geek" test. And if you use Java, so do you.
Java has been considered slow for ages. The earlier allegations (1995) were true. However, with the recent advancements in the JVMs from Sun and IBM, Java runs pretty close to C/C++. Check this benchmark. Contrary to this, there are other benchmarks that prove that Java is slower. All considered, it would be fair to say that Java cannot be considered "slow" anymore, yet its stuck with the label. How cool is to be the jock with the second fastest race-car in the block?
Swing disasters continue to give Java a bad name. Swing is a brilliant, although hard to learn, API. But the vast majority of Swing applications are so bad that they give Swing and therefore Java a bad name.
Java is a strongly typed language therefore you have to tell the compiler exactly what you intend to use. And if you make a mistake in the way you use it, the compiler has the guts to tell you that you were wrong. Too much chaperoning?
Java has a vast library that is available to all Java developers without any ambiguity. Thus, if you wrote yet another Map you would not be considered a data structures guru by Java programmers but a guy who hasn't heard of java.util.*.
Java did not have a good IDE that compared with MS Visual Studio. I think this one was true. I am not so sure it is any more with IntelliJ. The absence of good tools probably pushed away a lot of good programmers.
Java is popular. Anything that is popular has lost its elite status and therefore is not cool.
Java is an application programming platform. You cannot do cool things like device drivers and games, etc (until recently - but Java gaming is coming in a big way).
About Sachin Hejip Sachin Hejip, an architect with Sonic Software, is currently part of Sonic's ESB tooling intiative where he is leading a team of engineers develop Eclipse plug-ins to take Sonic ESB development to the next level. A recipient of Pramati's highest award for technical excellence, the Pramati Fellowship, he has been a core member of the Pramati engineering team where he led the Web Server intiative and has been a key member of the Pramati Studio R&D team. He has a keen interest in development tools and was the architect of the IDE's parser framework, which formed the base of his implementation of the code completion and Java/J2EE Refactoring tool set. He has designed and developed Pramati's paradigm of J2EE development called "Express Development" including the server-agnostic deployment framework.
Reader Feedback: Page 3 of 7
Jakes commented on 27 Aug 2004
I once read somewhere that made alot of sence...
Java... is not a product.... its a community... thats cool
Peter commented on 27 Aug 2004
Until 2 years ago I used to develop in C++ and at that time I never had to wait for my IDE for longer than 10 seconds to show a pop menu. Now, cool or not, when developing in Java (and Eclipse) it ever so often happens that the ''thing'' starts to do "I do not know what", and a few times a day it takes literally minutes to show a pop menu or switch a window. The virtual memory size of my IDE process is always around what I allow it to take (128Mb) and I assume these hickups are due to the gc hitting on the virtual memory system.....as a ''platform for development'' (not a language) Java is just not half as good as the MS Visual Studio 4.something I used work with.
So I guess I agree with the original statement.
after commented on 26 Aug 2004
Keith Doyle commented on 26 August 2004:
"Users don''t care about any of that crap. They don''t want to care what it was written in, and shouldn''t feel a need to. The ultimate measures of the value of a programming tool are the programs it produces, not it''s syntax."
Would you really say that the end user experience has more to do with the underlying programming language than the quality of the developer who wrote the program? This can be argued if you want to talk specifically about swing or awt standalone java applets. But that really doesn''t have any meaning when it comes to applications built for the web or SOA application servers, or specifically SOAP or XML based applications where you have just about anything on the user interface end, but a java application is doing the bulk of the business logic.
Maybe initially java put emphasis on it''s applet capability - which I think stinks. But if current trends are any indication, Java''s purpose is not to be an extremely fast video game language, nor a language to build dynamic user interfaces (though it''s not horrible for a lot of applications). It''s real strength lies at the heart of large enterprise business applications that require good architecture.
Wait, this was all about if Java was cool. Using Java to write device drivers is not cool. It is not cool to use Java to perform intense 3D shading. It is also not cool to use C to write a SOAP service for a bank. It is not cool to use JAPH Perl scripts for anything anyone else is ever going to have to deal with. It is not cool to use LISP as anything but an AI excercise.
AM commented on 26 Aug 2004
Why do so many Swing proponents just not get it?
Point 1: Java is a language for the masses that can be used by "average" IT programmers.
Point 3: Swing is hard to learn, vast majority of Swing apps are disasters.
This strongly suggests to me, as a non-partisan, that Swing is a failure: it is too difficult for the masses! And there is gui toolkit for the masses included with Java!
The point is not that something like the brilliant programs at jgoodies.com can be created, it is that doing them is akin to rocket science. In a language like Java, that is *wrong*.
Alex commented on 26 Aug 2004
Just as well I keep up my DJ''ing on the weekends... seeing as I''m not a ''cool'' developer any more...
Having spent time in the industry well before the Java days, I have to say Java has made me enjoy going to work a lot more. That''s all I care about...
Actually users might not care if the program is OO, but they will care if its inconsistent, and is hard to understand.
They will care if the program terminates with strange memory violations.
..or "out of memory" errors.
I met plenty of resource wasting assembly programmers when I was system programming. Performance isn''t guaranteed by the language you use but the approach you take to design and implementation.
There''s nothing wrong with being lazy, with striving to find the simplest way to solve the users problem. Of course, "as simple as possible but no simpler" is the real point here.
Managing dynamic memory is a huge problem with large systems and garbage collection is the solution now as it was back in 1957 with the first Lisp systems.
The idea that commercial development should be carried out usng assembler is frankly laughable.
Keith Doyle commented on 26 Aug 2004
Most of the life of a computer program occurs after the coding is completed. So just what goes on with a program after the programmer is finished with it? At that point, noone any longer cares if it''s OO, or garbage collected, or how easy it was to write any damn thing you can think of, or HOW PORTABLE IT IS (as long as there''s a version for your machine). In the end, NONE OF THAT MATTERS. Users don''t care about any of that crap. They don''t want to care what it was written in, and shouldn''t feel a need to. The ultimate measures of the value of a programming tool are the programs it produces, not it''s syntax. And Java programs tend to be hard to USE.
Unless you are merely a "recreational" programmer, your first job is to make the user happy, not to make your life easier. Java programmers seem to have gotten it the other way around. Java may be the right tool for recreational programmers, but not for ones who stay in tune with the user experience.
Frankly, I''d rather use programs that were written in pure assembly language. Why-- because I know they''ll run FASTER THAN HELL. But there aren''t very many anymore-- lazy damn programmers...
But as someone who has been trying to do commercial Object Orinted development for twenty years, it is the first commercially acceptable language that enables this. The reason is simply that it has a garbage collector. And if someone tries telling me again that weak pointer patterns in C++ are up to the task I''m afraid they simply do not understand.
Sure Java has some syntactic irritations, but it has provided a stable reliable technolgy over the last few years that.
The problems have come from developers over complicating solutions - all this EJB nonsense for example - that move systems away from OO principles.
Serguei Bakhteiarov commented on 26 Aug 2004
When I say "Objects are static by nature" I do not mean so called dynamic objects (Collections etc...), What I mean is the Objects in current incarnation of programming languages do not reflect the dynamic nature of the real world, especially relationships with other objects.
The most important concept of the real world is time and its continuity and I do not see natural way in Java how to express this in terms of parallel execution of work flow in time. Threads as objects are very amature and cumbersome to mix with other objects.
after commented on 26 Aug 2004
bad_alloc commented on 25 August 2004:
"Java coder use their brains only for application and business problem and forget how system works. Then we have may be 70% of java coders who forgot how system works, and some never learned how systems work"
That''s a problem with Java programmers who never bothered to learn how the system stuff works, not with the fact that Java doesn''t address system level issues.
Java won''t address system level issues itself, because it''s purpose is precisely to abstract out the system level problems so that developers can focus on large scope application and business problems. If someone wanted to deal with low level system problems, they''d write C or assembly. That''s what it''s there for. If you need that specific functionality in Java, you''d use the native framework.
Enterprise systems are not going to be written in system-level languages without abstracting out system level problems from application and business level problems. Even IF an enterprise system was written in C, you''d have programmers writing business logic who would never touch system level code because other people would have abstracted it out. The business logic developer is not going to sit there and create sockets and deal with low level memory management on specific operating systems when s/he wants to read some data from a database, perform some business logic, and display it to an end user sitting at some bank terminal, atm, or web browser. Someone else is going to have refactored that out into a black box to be used over and over again. That C developer may not even know how to construct the kinds of low level system development used in that black box; ie, just because you write C doesn''t mean you suddenly know how to write device drivers. Does that make someone who writes business logic in C lazy? Maybe. Does it mean that C sucks if you use it to write business logic? No.
Serguei Bakhteiarov commented on 26 August 2004:
"because it mixes OO and flow controls, which are fundamentally different. Objects are static by the nature, so it is impossible to describe a real world only using objects."
What do you mean, Objects are static by nature? Objects are well-defined data structures. A Perl hash is a data structure. Is it the fact that you can dynamically add properties to a map, but you can''t dynamically add properties to an Object in a strongly typed language like C++ or Java?
A perl hash isn''t going to dynamically suddenly add a property to the hash once the bank account can make pancakes. That''s a change in the real world situation you''re going to have to deal with somehow. And, my guess is, you''re not going to write ANY system in ANY language that deals with bank accounts suddenly possibly becoming chefs.
You write a program to deal with some real world logic or problem. If the logic and problem changes unexpectedly, you''re going to need to modify the code, regardless of the language. Just because a loosely typed language allows you to add a property dynamically at runtime does not mean you suddenly have the capability to adapt to any change in logic the real world throws at you.
And on top of that; if your objects are so static that they can''t adapt to KNOWN situations in the real world, then you have a problem with the design and architecture of the object, not the language itself.
And ultimately, if you need the complete, ultimate abstracted object, there''s always Map or apache/jakarta''s GenericBean type objects.
Serguei Bakhteiarov commented on 26 Aug 2004
First, please, do not compare "apple and oranges", - in this context, scripting (Perl and Python) and compiled (Java, C) languages.
Second, Java is un cool, because it mixes OO and flow controls, which are fundamentally different. Objects are static by the nature, so it is impossible to describe a real world only using objects. I guess new software paradigm is getting to pop up soon to substitute OO and be more convinient to describe real world (concurrent!) objects and thier relationships to each other in a consistent way.
Some attempts were made already long while ago. Remember GPSS, for instance? .... I guess vast majority of current software developers were not even born yet when it was rolled out by IBM :-)
Mega Myth #1 - Java is more portable than any scripting language (write once run anywhere). Wrong!! Java is portable provided you have a JVM for the platform. Python is also equally portable provided you have the Python interpreter on the platform. Considering that most major platforms have both JVM''s and Python interpreters, I would say that Python is as much of "write once run anywhere" as Java.
I''ve noticed that who mention portability, garbage collection, array bounds checking, no #ifdef problems, they are comparing Java against C/C++, while the point in question is compating Java against scripting languages. Python has all these features and more.
It seems to me that most people who like Java relate it to their experiences with C, and have never programmed in Python. This of course makes the whole argument rather pointless because defending Java without being able to see the other side leads nowhere.
An argument like "Brevity in Python is overrated" makes sense if the person actually used Python and then felt that the brevity is overrated, but its rather meaningless to say that without having excerienced the python syntax firsthand.
Example to illustrate the point -
list = [1 2 3 4 5] # this is the syntax for variable length lists
listoflists = [[1 2] [3 4] [5 6]] # create a list of lists
# print all items in listoflists
for aList in listoflists:
for item in aList:
Try creating lists like this and iterating through list of lists with Vectors and Iterators in Java and see how long and complicated it gets. Now keep the python program on the left, the Java program on the right and see which is easier to read and easier to understand. Even a person who has never seen Python code before will likely understand the program.
Java is verbose. It takes a long time to get anything useful done in Java. Have you guys *seen* Python?
The reasons I won''t use Java are these: where rapid development and portability count, Python is the clear winner; where speed, robustness and reliability count, C++ is the clear winner. The special bonus is that those two languages dovetail oh-so-nicely, with boost::python. Java fills the middle ground, and I''ve never found a use for it. Note that I''m not criticizing the Java language as such, just the space it occupies. Maybe I''ll use it one day when I develop an application for mobile phones.
Yuri Huitrón Alvarado commented on 26 Aug 2004
"Java is popular." want to program in something not so popular? why not return to Ada or Oberon ? or just invent your own language which only you could use, so it will be so 133t that only you will be using it
"Java did not have a good IDE" Oracle, IBM, Sun and Borland are wrong? check their java IDE''s !
"Swing disasters continue" well, maybe it''s not so easy, but defenitively not impossible to learn
"Java has been considered slow""...How cool is to be the jock with the second fastest race-car in the block?"
We are not talking about cars but programming languages, even the second place it''s fast, no?
"Java has considerably fewer surprises" Even Basic has surprises. The surprise relies on the magician, not on his hat.
jhook wrote: Java is cool, but I'm tired of having to learn 5 different ways of doing one thing. Not only playing a guessing game of possible solutions, but once picking a solution, books tell you to wrap the solution up in a facade, adding more complexity to your application.
That's not to say that patterns are patterns, in any language, but with .Net you are left with the confidence of a strong single leader, Microsoft. Sun and Java, on the other hand, is led by commitee. Smart people are tossing API's out there left and right that are nothing more than ideas-- J2EE for example. Again, I'm left with picking a vendor/solution.
With Microsoft, things are pretty much set in stone via the tools they provide. This is how .Net handles MVC, this is how .Net handles Database access, this is how .Net cooks a turkey.
I would feel more confident know that our implementation was written on a single st...
Serguei Bakhteiarov wrote: I think (as Wittgenstein too :-) that the "languages defines your mindset". This applies to programming languages as well.
However, judging is the language tool or not is sort of meaningless, because "underneath" it is still, well a bitcode.
So from this stand point any computer language is a tool. Mixing the tools (languages) to produce bitcode is perfectly fine and it happens all the time, especially in "big" projects :-)
tim wrote: I think Ivan's comments (14 September 2004) are not correct. (Or maybe irrelavent?)
"Why so many people think, that programming languages are tools? Programming languages are aptly named *languages*: they form your way of thinking."
If your choice of language forms your way of thinking, perhaps you aren't working from the abstract solution first...
Ivan wrote: Why so many people think, that programming languages are tools? Programming languages are aptly named *languages*: they form your way of thinking.
When you are solving a software problem in a medium to big project, you most often cannot change the languge in the middle of the project. You have to solve it *in* Java or *in* C# or whatever language the project is written in.
Tools are not like that. You start to search for the best tool to solve the problem, and not thinking to yourself "should I hammer it from the front or from the back side?" Nor you try to build the whole building with a jigsaw.
So, programming languages are more unlike tools in your toolbox.
Darren wrote: Please excuse the rants on my last post. Paul's essay touched a nerve.
It doesn't matter if Java is cool or not. It doesn't matter what tools you use as long as you are still creating something wonderful. Mr Graham should know this if he considers himself an authority on hackers. If he doesn't, its his loss.
Darren Pye wrote: I would really like to see Paul's resume.
It sounds to me like he has no experience in the real world working on anything other then small simple problems. That's not great programming, thats hobbyist coding.
He seems to have had a very cushy and narrowly focused set of projects and problems that he has dealt with. In that scenario...SOME of what he said is valid. The Disney land he describes could work. But what about the real world with real complex problems to solve? With his beliefs I find it almost impossible to believe he has had any real part in solving a serious software problem. Oddly, his views remind me of my own back in the early 80's. I was a hobbyist programmer considered a wizard among my peers, with an ideal of the perfect working environment. However, I was working on small finite (and now that I know better, simple problems)...then I turned 12 and starte...
Rajitha wrote: Even I feel this a pointless discussion. With my experience what I feel is, no language is similar. Each one is strong on its own areas and there are applications where one can perform to the most and others not. So comparing a language with another language is completely pointless.
perrin wrote: Java is verbose, pushed by totally uncool corporate goons, and not open source. Duh. However, Graham's criticisms, while funny, are almost completely wrong. There are lots of good hackers using Java, and all you need to do to see this is look at the open source Java community. There is a willingness among them to admit that some problems are actually complex and are not best solved by writing three lines of code (often in a bizarre newly-invented syntax). I find this acknowledgement somewhat lacking among many Perl programmers who I meet.
Tom wrote: Java is a ver cool simply from the aspect that it brought a new paradigm to the forefront.
The lofty ambition of being able to write once and run anywhere was achieved with the exception of little quirks here and there. The defragmentation of the JVM from the published standards killed the WORA process - that is not the fault of Java but of the JVM writers.
The simple fact that it can cause such an uproar from those both for and against the language/platform is a tribute to how cool it really is.
Remember, it is just a tool, not for everyone or every situation, but like any tool, when used properly it will do the job in a most satisfactory way.
Good computing everyone.....
Gregg Saffell wrote: I taught Java to undergraduate business students last year and was surprised to learn the extent to which C# was perceived as being easier to learn. I think the ease of finding, downloading, and installing the JVM and an IDE along with the learning curve associated with the IDE were the main culprits. Microsoft had made all of the above very easy for the university and students whereas the Java side required a good deal more effort on the part of the teacher and the students.
For Java to be a "cool" technology beyond the world of computer specialists, a lot more will have to be done to flatten out the learning curves of both the language and a free IDE. Do you realize how much you have to master just to be able to write even a console oriented Hello World program?
Until an application of at least minimal complexity can be implemented easily by a novice, the rest of the world is no...
Mark Watson wrote: Is Java a little un-cool? Sure. So what.
I love doing server side Java. Is Java my favorite language? No. That would probably be Common Lisp. The thing is, for most of the work that I do, Java has several advantages:
Great free platform support for web presentation, SOAP, XML-RPC, asynchronous messaging (JMS), etc.
There are many skilled Java programmers: when I build a system for a customer, I can feel confident that maintenance will not be a problem.
Common Lisp has advantages also (extremely fast compiled code, small runtime overhead, rich standard library, very terse language) for some types of development (I use Lisp for working on algorithms, natural language processing, and other problems where I am breaking new ground - Lisp is great for experimental programming).
Ivan wrote: Practically, every big and most medium-sized java programs I''ve seen, use code generation. For example, GUI builders, persistence frameworks, etc.
Code generators have the following problems:
* They are hard to write. You will make a code generator only if the only alternative is to "generate" the code manually.
* They don''t work well with other code generators: you cannot have a persistent GUI class for example. (I know, it''s a silly example, you''d want to make only the model persistent, etc. but the argument is still valid, I''m just to lazy to come up with better example :)).
* Code generators don''t work well with the IDE. The IDE will know only about the generated code, and not about the *source*. This is partly because IDEs in Java have code generators on their own (sometimes called "wizards").
So, why does Java needs code generators that badly? Because it l...
Ralph Mack wrote: Ultimately, end users of application software care about one thing:
- From where I am, I tell it to do what I want and it _just works_.
This goes for acquisition, installation, invoking a program, accessing a web site, running a program, or making it go away. Post it up on your wall. Whatever you have been told, after all the supervisors, managers, marketers, salesmen, pundits, and other superfluous personnel are out of breath, and there''s just you and your user left standing, this is all that really matters.
So what makes it "just work"? How does Java fare?
* The existence of machines that ship without a JVM and the requisite base libraries give it a poor score for install.
* The slow load time on application startup definitely hurts.
* The programming model prevents most memory leaks, a major cause of the kind of C/C++ program failures that cause users to follow th...
Matt wrote: To debunk the question of whether Java is un-cool, you need a handle on what cool is. The popular view is that cool is one of those Zen-like notions that ceases to be cool once you define it. Taking a decidedly un-cool approach, I typed in "what is cool?" in Google. It came back with a dozen or so definitions it found on the web. I think this one nails it:
"A term which is used entirely too often on the Internet."
Is Java un-cool? With millions of developers, it''s easy to make the case that it''s popular. With the collective experiences from the Java community, it''s not difficult to argue that it is a great language for improving productivity and maintainability. Java **was** cool when it came out in 1995. Does that make it cool now? I think not.
tim d wrote: I read Graham''s stuff...seems kind of silly, wasn''t sure if it was a joke or serious stuff. Who cares about what HACKERs want/like? What about SOFTWARE ENGINEERS? I work on a huge application that would be impossible in Python but Java makes it possibly--and with less bugs than C++ would give us, by far. I was a C++ developer for YEARS and now after 2 1/2 years of JAVA, I hope I don''t ever have to go back...Java isn''t COOL--it''s BETTER. (Of course, there are some things we still have to do with C/C++...but we''ll live with those.)
jay_sdk wrote: I actually really like Java, cool or uncool. I write shell scripts for common tasks/utilities on Unix, use Perl where it gets a little more complicated or I need something that takes input, modifies it and puts it somewhere else.
Started Java in ''97 when it was mostly used for silly applets.
But most of my job consists of web-applications. With the WORA I can write it on a workstation/desktop whether on Win2K laptop, or Linux workstation, or whatever, and still deploy without problems to any target application server on pretty much any platform. I can see benefits in EJBs if you''re going to deploy against load-balanced massive systems of say 100+ servers, but just using servlets, JSPs and JavaBeans I can drop it all in a single WAR and deploy as many times by ftp-ing it to the server. In TomCat that''s enough, for those commercial ones I may have to register it once in an admin...
David Bueche wrote: People need to spend less time worrying about looking "cool" and more time getting the job done--regardless of which language they use. Regardless of how "cool" you look today and which language you use today, you WILL be using something different in a handful of years, whether a different language or a shovel.
craig wrote: coolness != good language
coolness is about doing things like:
- low level memory manipulation; because only a cool programmer would ever even know why you would want to do this.
- Write really tight, very fast algorithms.
I agree that java is faster to write code in, but coolness is related to having complete control over your computer or being the latest trend. Assembler / C / C++ are still cool because the allow this. .NET is cool because it is the new kid on the block. Business efficiency is a totally different question than coolness.
Java was cool in the 90s because it made the web come alive, worked well with internet technologies, etc. Other languages appear to be catching up, and java has reached the masses. There is nothing unique about java that continues to make it cool; productive and useful yes, but productive no.
Lori MacVittie is a subject matter expert on emerging technology responsible for outbound evangelism across F5's entire product suite. MacVittie has extensive development and technical architecture experience in both high-tech and enterprise organizations, in addition to network and sy...
In his general session at 19th Cloud Expo, Manish Dixit, VP of Product and Engineering at Dice, discussed how Dice leverages data insights and tools to help both tech professionals and recruiters better understand how skills relate to each other and which skills are in high demand usin...
When building large, cloud-based applications that operate at a high scale, it’s important to maintain a high availability and resilience to failures. In order to do that, you must be tolerant of failures, even in light of failures in other areas of your application. “Fly two mistakes ...
Containers and Kubernetes allow for code portability across on-premise VMs, bare metal, or multiple cloud provider environments. Yet, despite this portability promise, developers may include configuration and application definitions that constrain or even eliminate application portabil...
Modern software design has fundamentally changed how we manage applications, causing many to turn to containers as the new virtual machine for resource management. As container adoption grows beyond stateless applications to stateful workloads, the need for persistent storage is founda...
Using new techniques of information modeling, indexing, and processing, new cloud-based systems can support cloud-based workloads previously not possible for high-throughput insurance, banking, and case-based applications. In his session at 18th Cloud Expo, John Newton, CTO, Founder an...