This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
I was having this discussion with one of my friend and he said that JAVA is a specification. and jdk is the implementation of this specification. and together these two makes us achieve the language like experience. I agree to this point that yes with jdk we are able to do whatever wew can do with JAVA.
But my argument is if JAVA is a specification what is C or C++ are those specifications as well?? What is the difference then between JAVA and English ... is English a language or is it also a specification ??
To me JAVA is a language it helps us communicate with the computer JDK is a tool that translates what we say to what computer understands.
But am I right or JAVA is a specification ??? J2EE is called specification is in the same manner JAVA a specification ?
These are confusing thoughts in my mind ... please share your views on this ....
I closed the other two copies. I left this one open not because this is an advanced question, but because it already had two replies.
By way of an answer to this "question": First, it's "Java", not "JAVA". It's not an acronym. Second, Sun likes to call Java a "platform", which includes several components: the Java Language, the Java Virtual Machine, and the Java Standard Edition Platform Libraries. Yes, it's a specification rather than an implementation. Some languages are defined by a single implementation -- these tend to be languages with complex but informally described runtime support like Python, Perl, and Ruby. Most "important" languages are defined instead by a specification or standard: and C, C++, and Java are among these. This means that there can be multiple implementations.
But the question of whether something is a language or a specification actually makes no sense. The Java language is defined by the Java Language Specification. It's like asking whether something that looks like a horse is a horse or a mammal. It's both!
According to Noam Chomski (the guy who started all this), a language has a grammar and a vocabulary. A language isn't necessarily bound to a computer, but for a programming language (like C, C++ or Java etc.) it comes in handy.
Natural languages are highly irregular languages and their 'specification' has to deal with history, dialects etc. Not so for programming languages, i.e. a programming language can have, and most of the time actually has, a more or less formal specification.
C and C++ e.g. are fully formally specified by their ANSI/IECCC/ISO definitions. A formal specification defines the grammar of the language unambiguously, as well as the vocabulary (the character set, the token set and the keywords), as well as the semantics of it all.
So, while a natural language can have a more or less formal specification, a programming language always needs a formal specification. The distinction between the specification of a programming language and the language proper itself is an artificial one: i.e. both can be used at will indicating the same thing: Java or C or C++ or whatever.
Implementations of these languages (compilers, libraries and runtime support) are either 'compliant' or not. When compliant, the implementation 'obeys' the formal specification in every little gory detail.
The usage of the programming languages is all about programming, algorithm implementation, use of libraries and/or classes or even entire technologies implemented in that language.
In Godel, Escher & Bach Hofstadter introduces three languages: BLOOP, FLOOP and GLOOP. There are plenty of example programs but no known implementations. Similarly Mike Cowlishaw and a small bunch of friends wrote hundreds of REXX programs through several versions of the language before he wrote a line of the interpreter. An interesting way to work fer sure.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Joined: Oct 14, 2005
Kym Thompson, sorry it was my first post here so was not sure where to go and where to post .... will surely keep in mind for next time. ...
Kaj Bjurman, I have posted it on many sites..... so ??? is it written somewhere that I cant .... i have posted it at various sites so as to get different opinions of different people .... you try to show your various forum knowledge ... if have some answer than contribute ... otherwise dont waste your and others time .....
Ernest Friedman-Hill, sorry will post the quetion at one place from next time .... but the whole intention of postin it at 3 different places was to get answer from various people .... the guys at advance forum may not go to beginers and beginers wont go to advance ... so I thought that this question can be and should be answered by all who are associated with Java in any manner. And you would also agree that this question can be answered by all level of people and every one will give their level of answer ..... I think you need to think about your policy of only one place to post .... for such questions ..... As for "JAVA" being Java ..... who said its Java, I may write it the way i like it .... i may wrtie java or JAva or JAVa .... will it change the language in any manner ..... NO ! But anyways thanx for trying to answer my question ....
Jos AH, thanx for such an elaborative answer its really good. I think you should put that up on your blog as well ..... and dont forget to send me the link of your blog....
Stan James, thanx for your help and I appreciate your effort.
Originally posted by Tarun Chandel: Kaj Bjurman, I have posted it on many sites..... so ??? is it written somewhere that I cant
No, it's ok to do so. Still, for someone who visiting more than one of those sites, it's a dilemma, and when you find out after you have answered at one of the sites, it even can be annoying. It might be a good idea to indicate that the question is crossposted to other sites.
if have some answer than contribute ... otherwise dont waste your and others time .....
Think again about what you wrote here: there is someone having a problem with your question, but letting you know is wasting your time. I'd respectfully suggest that in fact it is valuable feedback about how your question is perceived by your fellow ranchers, and that talking about it will strengthen our community. That's actually what we strive to be: not a forum for fast and hard answers, but a community with friendly, respectful and interesting discussions.
Ernest Friedman-Hill, sorry will post the quetion at one place from next time .... but the whole intention of postin it at 3 different places was to get answer from various people .... the guys at advance forum may not go to beginers and beginers wont go to advance ... so I thought that this question can be and should be answered by all who are associated with Java in any manner. And you would also agree that this question can be answered by all level of people and every one will give their level of answer ..... I think you need to think about your policy of only one place to post .... for such questions .....
In this case, it could have been a good idea to start a discussion in one forum, and post a short notice with a link to it in the other two.
As for "JAVA" being Java ..... who said its Java
That's simple: Sun. It's a name choosen by Sun, a trademark even, if I remember correctly. So it's probably Suns marketing people who decided how to write it.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
>> I was having this discussion with one of my friend and he said that JAVA is a specification.
No, Java HAS-A specification like every other computer language. Java IS-A computer language. Java is accompanied by a rich set of standard libraries, written in Java. Java is usually executed on a Java virtual machine. All of the above have specifications, as does my mobile phone, even the sandwich I ate for lunch.
So, Java has a virtual machine, a language, a trademark, a coffee mug and a tee-shirt. They all have specifications. Is a Java tee-shirt a specification? No. If you want to discuss the language unambiguously then just say the Java language.