Talk:Java (programming language)

From Wikipedia, the free encyclopedia

A request has been made for this article to be peer reviewed to receive a broader perspective on how it may be improved. Please make any edits you see fit to improve the quality of this article.

This is the talk page for discussing improvements to the Java (programming language) article.

Article policies
Archives: 1, 2, 3, 4, 5
Former featured article Java (programming language) is a former featured article. Please see the links under Article milestones below for its original nomination page (for older articles, check the nomination archive) and why it was removed.
Main Page trophy This article appeared on Wikipedia's Main Page as Today's featured article on December 17, 2005.
This article is within the scope of WikiProject Computer science, which aims to create a comprehensive computer science reference for Wikipedia. Visit the project page for more information and to join in on related discussions.
B rated as B-Class on the assessment scale
Mid rated as mid-importance on the assessment scale


Contents

[edit] Java name

Message to Sdornan: I made the "09:09, 31 August 2007" edit to document how the final name was chosen. However I noticed you changed the meaning of the sentence when cleaning it up in one of your following edits (it originally explained that the project started in June 91, but your edit make it sounds like what happened in June 91 was the decision on the final name). I am going to change the sentence to something a bit different, if you don't mind. -- R. Duxx 76.173.67.9 06:23, 1 September 2007 (UTC)

[edit] Languages Influenced By

It is apparent that Java was influenced by the Mesa language developed by Xerox. Coder1024 03:37, 2 May 2007 (UTC)

[edit] Influenced by Lisp and C#?

216.252.85.18 added Lisp and C# to "influence by" in the info box. I've reverted those, as obviously the chronological order is incorrect for Java to be influenced by C#. While Gosling has mentioned Lisp, along with a number of other languages not listed, as a language from which lessons were taken, I think it is a stretch to include Lisp in the infobox. I consider the infobox to list the languages which had a strong influence that can be traced from the features and philosophy of the language. Otherwise you rightly might have to include every preceeding language as an influencer. I welcome any other opinions on the matter. —Doug Bell talk 04:12, 21 February 2007 (UTC)

Late addition to this thread: what does "influenced by" mean in the first place? I personally have a very strong expectation that a language "influence" refers to the language at the conception of its most essential features and characteristics. I expect the influence tree to be structured as a DAG, except in cases where the inception of the languages was contemporaneous to such a degree it amounted to growing up in the same crib. I can't even come up with such an example off the top of my head: Ruby postdated Python by just long enough to suspect Python wasn't much influenced by Ruby. (Second question: does "influence" include negative influences such as "no way we do that stupid thing they did over there?")
The kinds of minor influences being proposed here make the idea of an influence non-encyclopedic, degrades the concept almost to a trivia section. The influence can be ridiculously minor, even if a reference is found saying "X was aware of Y". A language feature might have been on the "todo" list for a decade before making it to the top of the list, by which point another language has delivered the feature first, whereupon the syntax is borrowed as a convenience to people who work across language boundaries. Probably every spoken human language in the world that has a term for "satellite dish" has copped at least one Anglicism. Worthless. MaxEnt (talk) 17:08, 10 December 2007 (UTC)
Java is certainly influenced by C#, witness the slew of new language feature in 1.5, after C#, which was in direct competition, brought some of its own missing from Java. It'd be pretty hard to source, though... As for Lisp, I agree. -- int19h 05:51, 21 February 2007 (UTC)
Many of those relatively minor language changes have been under discussion for a long time. I don't think it's accurate to say that they were influenced by C#, but even if they were, the language itself is not, and the additions are minor. —Doug Bell talk 06:10, 21 February 2007 (UTC)
The influence by C# was already there (note that user 216.* didn't change it), and was properly sourced and explained. (Unlike the other influences, shouldn't we explain about Eiffel's and SmallTalk's influence too?) The chronological order has little to do with which language can influence which. Language gain features that existed in other languages all the time, no matter which langauge came out first. I think it's pretty obvious that Java was influenced by C#. Most of the major feature differences between C# and Java were implemented in Java 5. And that's really not a Bad Thing, if you ask me. All of the features significantly changed the language, and the standard library would probably have been designed very differently in the presence of enums, annotations, autoboxing, and even varargs. (Generics is correctly not included in the list of features, since it has a completely different origin and implementation.) Anyway, about Lisp, I don't really recognize its influence in Java. This is the first time I heard about it. - Chip Zero 09:36, 21 February 2007 (UTC)
Other than generics, the features implemented in Java 5 were primarily "syntactic sugar" in that they didn't add any functionality, only provided alternative means of writing the same thing in the source code. They really are quite minor additions to the language, nothing on the order of the inner classes. Generics had been discussed since the early days of Java, well before C# was even a rumor (it was JSR 14, submitted in 1999). Whatever "influence" C# had on Java was quite minor. You can make a case that annotations had a significant impact on the Java environment because of how they are leveraged by tools, but their impact on the language itself is minor. Besides, my take on the languages listed in the infobox is that it means "creation influenced by", although as I point out above, it wouldn't really matter if it just means "influenced by". —Doug Bell talk 09:56, 21 February 2007 (UTC)
Besides, you can't claim that varargs and enums were influenced by C#—those were features of C, and were not implemented in a similar fashion in Java as in either C or C#. —Doug Bell talk 10:10, 21 February 2007 (UTC)
Yes, most of these features are strictly syntactic sugar. But then again, most of the Java language features are syntactic sugar over the core language (such as inner classes, most control flow statements, i++, +=, ?:, ...). It's the sugar that makes the language. And don't underestimate these features, they are all powerful features for building good application frameworks (minus perhaps the enhanced for loop). Auto-boxing for example changes the way we look at collections and methods that take a Object argument. Enums give increased typesafety with the simplicity that the old integer constants used to have. Varargs allows you to write new kinds of methods, such as the new String formatting method. (Which is implemented on basis of a typesafe array, unlike in C BTW.) Yes, technically you could do these things before, but it was all so hard or inconvenient that nobody ever did it. And yes, annotation obviously go beyond syntactic sugar, and allow all kinds of funny things such as the XMLSerializer for C# illustrated. Finally, my take on "influences", is just that, other languages that had a (notable) influence on the design of the language at one point or another. The computer languages history graph illustrates this nicely. Likewise, Ruby is also stated as an influence on C# here, even if it only influenced C# 2.0. - Chip Zero 10:41, 21 February 2007 (UTC)
I still disagree with listing C# as an influence. For now, I've removed the attribution of varargs and enums from the C# reference because these were clearly features from previous lanaguages that had been discussed as additions to Java long before C#. I don't see the connection for annotations either as these had been informally done using Javadoc comments for some time prior to be adopted as a language feature. I think the connection to C# is extremely thin and certainly falls below the level of influencer. —Doug Bell talk 19:18, 25 February 2007 (UTC)
I have to agree with you about enums; they have a different functionality and implementation in the two languages (flaggable enums vs. enums with members). (Although one could argue that they'd never have been added if it wasn't for C#, since enums have been around for ages now.) Java varargs however — even though the name comes from C — work exactly the same in Java as they do in C#, albeit with a different syntax. I hate to re-iterate myself, but both are implemented using a heap-allocated typesafe array as the underlying data structure. What other statically typed languages do you know do this? - Chip Zero 15:35, 26 February 2007 (UTC)
With enums, they had been used in Java as a pattern prior to C# being a twinkle in the eye of Microsoft. (I may actually have been the first to propose this pattern in 1996.) Like many of the added language features, formallizing it in the language was the result of careful consideration. I would certainly put varargs in this category as well, although I suppose the C# implementation of the feature my have been suggestive. Java is defined as much by what features are not in the language as it is by the features that are. The only one of the added features I think likely to have been directly influenced by C# is the autoboxing/unboxing of primitive types into their corresponding primitive wrapper classes. —Doug Bell talk 16:06, 26 February 2007 (UTC)
Well the thing is, in C# enums are really just primitive types, with language and framework support (see comparison of C# and Java). This means that they can be combined using the bitwise OR (|) operator like in C++. Before Java 5, people used constant integers on interfaces as a poor man's enumeration that also supported this. And yes, Java's minimalism is (or was) part of its philosophy. Less can definitely be more, as it prevents complexity and errors. But it seems to me that times may be changing since the advent of Java 5 (and C#). It looks like they'll be introducing closures next, which is normally a good feature, but it makes inner classes somewhat redundant. (Not to mention that it means that existing libraries will then no longer be using the preferred delegation construct.) Just like enums did for the old ints-on-interfaces. What began by copying the major feature differences with C#, may turn out to be a whole new direction for Java. In that sense I am definitely convinced Java was influenced by C#. Likewise, Java's (product) open-sourcing wasn't just the new CEO and the old "Java isn't free enough for Linux" thing, it was also influenced by competition with C# on Mono (which was free enough for Linux). - Chip Zero 17:18, 26 February 2007 (UTC)
"What began by copying the major feature differences with C#". I'm not accepting this premise at all—certainly not as a motivation for the changes. And closures have been discussed since the beginning (even as part of the initial language, and again when inner classes were being added.) —Doug Bell talk 17:30, 26 February 2007 (UTC)
I ended up removing the C# "influenced by" statement, mostly on the grounds that the note attached to it offered three cites, none of which were reliable: one was a forum post and another was a personal web page, and neither of the authors seemed to be authoritative. The third cite was to a history of programming languages page whose only related cite for this information was THIS page! Keeping the "influenced by C++" statement without any useful cites didn't seem like the thing to do, given the contraversy around the topic. SlitherM 00:37, 21 March 2007 (UTC)
While I agree we shouldn't cite forum posts, I don't think there's anything wrong with the other two sources. Both were in-depth studies of the subject. The "history" page is referenced in hundreds of web pages and in several scientific publications. And I don't know if you noticed, but the other "influences" don't have any references or explanation. What was the influence of Eiffel for example? And what sources are there for that? I think you're severely exaggerating about the lack of authority of the references. Am I sensing some hostility specific against C#? I'm no fan of Microsoft and their politics either – far from it – but I think it's wrong not to list C#'s influence on Java. That it was influenced by C# doesn't make Java inferior, it just means it's keeping up with the current trends and adapting to the new market conditions. And it did just that by adding "the enhanced for loop, autoboxing, varargs and annotations". They are all features that existed before in C#, and were some of the most notable differences between the two languages. – Chip Zero 21:53, 23 March 2007 (UTC)
Thanks for pointing out that the influence of Eiffel was lacking a citation -- I just added one. As for the influence of C#, perhaps it would be best if we try not to sense hostility in each other? My position is just that the cites given don't seem to me to be reliable, and I don't see any reason to think that there should be an influence. Tackling the first point first: The "history" page that is cited, if you look at its edit history, doesn't give any attribution and, as I said before, the only reference it gives that relates to C#'s influence is THIS page, which raises the question of whether that page only claims that C# is an influence because this one does! The other cite is to a unrefereed talk by Barry Cornelius, in which he explicitly says "In my opinion, it is C# that has caused these radical changes to the Java language" (emphasis added). Therefore, I think it cannot be taken as reliable either.
As to my second point, I don't see any reason to think C# should have been an influence. JSR 201 added these features, but doesn't claim any influence. The only two non-simple features it added were enums and autoboxing. Java's enums are VERY different from C#'s, and boxing and unboxing are old ideas that have been around well before Java. For instance, Xavier Leroy's 1992 article [1]. So, without any citations in favour of an influence, why assume that there is one? SlitherM 01:49, 24 March 2007 (UTC)
I'm not sure where you see a reference to this article, but it seems that the "history" page added this influence in May 2005,[2] while this page added it in November 2006.[3] You're right about enums, we actually discussed this (see above), and removed it from the list of features. As for autoboxing, yes, "boxing" and "unboxing" are no new concepts. What Xavier Leroy describes is a way to use recursive unboxed memory allocation as an optimization for a language that normally uses fully boxed types. The novel thing about what C# and Java did is adding (non-recursive) boxing and unboxing to a language with a type system that already supports both boxed and unboxed types, thereby introducing polymorphism for the primitives. Furthermore they still require explicit use of an object type (boxed type) in methods or data structures to make use of this. So I don't think it's really the same thing, although C# autoboxing probably had a basis in this or related papers. Anyway, try a Google search for autoboxing C# java. You'll find many articles that have made the observation that Java introduced autoboxing and other features that were present in C# before. Java 5 simply added most of the major features that introduced were in C# but were not yet in Java, and implemented them in the same way, with only some superficial differences. This includes annotations, which I would definitely consider "non-simple". Just that the JSR (which didn't make the design discussion public) didn't mention the influence doesn't mean there isn't one; that's why we have to look at external observations. Anyway, good job on the Eiffel citation. (Although I'm still not exactly sure what aspects were influenced by Eiffel, but that's probably just me.) – Chip Zero 11:56, 26 March 2007 (UTC)
I'm not even sure why we even put Influenced by here in the first place, clearly intense competition for the developer's hearts and minds influenced the JCP committee to add some features found in other languages but were not there before Java 5 (Note: Sun no longer calls it 1.5 but Java 5). Certainly C# wasn't the original language to introduce generics. If you can name at least one ORIGINAL feature in the C# language that is also found in Java as of version 6 then I will agree with you, otherwise lets just delete the whole thing as the PROGRAMMERS and DEVELOPER community ultimately influence a certain language. Daimengrui 08:22, 15 November 2007 (UTC)
All languages are influenced by previous languages - after all, Java's memory management is in response to noted issues with pointers as seen in C++.

I'd argue against C# influencing Java. If you look at things like Generics, the JSR was in progress one hell of a long time. Can research a few others, but the number of ideas from C# introduced into Java, if there are some, is negligable with regards to claiming C# influenced Java.

Minkythecat (talk) 13:49, 11 March 2008 (UTC)

Influenced by J# - is somebody seriously having a laugh / trolling? A Microsoft language intended to replace java influenced Java? Minkythecat (talk) 13:58, 11 March 2008 (UTC)

[edit] Compilation

The first paragraph of the article says that

Java is an object-oriented programming language developed by Sun Microsystems in the early 1990s. Java applications are compiled to bytecode, which at runtime is either interpreted or compiled to native machine code for execution.

This makes it seem that java can run by either:

  1. Interpreting bytecode at run time
  2. Compiling bytecode to native code at run time

Thus leaving out the possibility of compiling to native code ahead of time. Jorge Peixoto 02:57, 9 March 2007 (UTC)

To the best of my knowledge, an implementation directly compiling from .java files to native machine code would not be Java (since bytecode spec is also part of the standard). Otherwise, the sentence you cited does not say anything about whether bytecode should be compiled to native code at runtime or not, so ahead-of-time compilers, such as Excelsior JET, are seemingly covered by it. -- int19h 15:39, 9 March 2007 (UTC)
Actually, the Java Language Specification is a completely separate document than the Java Virtual Machine Specification. The language spec describes how the language behaves, and says nothing about how the JVM works, or how it should be compiled other than that the compiled code should work correctly. Therefore, it would be entirely legal to compile Java code to native code. I agree with Jorge Peixoto that the first paragraph is misleading. SlitherM 00:20, 21 March 2007 (UTC)
I've considered changing that statement myself. The fact is that the language and VM specs were intentionally kept at arms-length so as to allow the widest possible latitude for environments that run the Java language. There is nothing in the language spec requiring compilation to bytecode, AFAIK, and in fact, there have been a number of implementations, esp. early when performance was a bigger issue than now, that compiled directly to native code. So I would support at least a qualification to the statement. The statement also doesn't allow for the execution of the bytecode natively—there were some early stack-based Java processors that executed the bytecode directly. My recommendation would be:

Java is an object-oriented programming language developed by Sun Microsystems in the early 1990s. Java applications are typically compiled to bytecode. At runtime, bytecode is usually either interpreted or compiled to native machine code for execution, although direct hardware execution of bytecode by a Java processor is also possible.

Doug Bell talk 05:34, 21 March 2007 (UTC)
Sounds good. You should probably add something like "or native compilation using GCJ is also possible.".Chip Zero 21:56, 23 March 2007 (UTC)
OK, I changed the wording. —Doug Bell talk 22:05, 23 March 2007 (UTC)
Great, sounds much better now. – Chip Zero 11:57, 26 March 2007 (UTC)

[edit] Too heavily criticized

This is not a neutrally or fairly written article by any stretch. There is entirely too much emphasis on criticism. Since there is an entirely separate article devoted to criticism, then there should be no mention of it here. —The preceding unsigned comment was added by 65.118.4.1 (talk) 16:28, 1 May 2007 (UTC). It seems like every article on wikipedia has a criticism section. But I think that "no mention of it here" would be stupid, because it's an extension of the article. It'd be like no mention of a list of episodes on the TV show that the list of episodes is about. J'onn J'onzz 11:48, 13 June 2007 (UTC)

C# doesn't have a criticism section. And all of the criticisms about Java would apply to C# wouldn't it? I think the either Java should lose its criticism section (since most other languages don't have a criticism section). Or that the Java Criticism aricle should be changed to criticism of Java and C#. —Preceding unsigned comment added by 65.240.128.253 (talk) 17:48, 6 September 2007 (UTC)

I agree that C# should be criticized as well (if youw ant to write the article go ahead). However i dont think C# and java criticisms should be combined. While it is true that the two languages are very similar they have distinct differences in both their API and the language itself. For example delegates are unique to C# and java specifically does not include these or any concept of it. So i think the articles should stay separate, despite some overlap. - Debeo Morium: to be morally bound (Talk | Contribs) 20:09, 6 September 2007 (UTC)

[edit] Dispute with microsoft

after Sun claimed that the Microsoft implementation did not support the RMI and JNI interfaces and had added platform-specific features of their own

Was Sun's claim true? What platform-specific features? Also, encyclopaedic content must be referenced. Shinobu 20:15, 6 May 2007 (UTC)

It is more than a claim, it is the reason why a judgment prevented Microsoft to call their implementation Java. See for example this Yale University case study here. For example Microsoft made Java programs communicate through COM instead of CORBA (COM is tied to Windows). An excerpt from the referenced study: "They decided to omit the class libraries for Remote Method Invocation (RMI) and to disable generation of output for the new version of the Java Native Interface (JNI). A customer could not use RMI to communicate between Java programs on Windows and Unix. Similarly, a C language program written to extend Java would not operate correctly in the Microsoft environment". See also a synthesis of the judgment here: "The court ordered that if Microsoft ships products that include the Java technology, it must change those products within 90 days to address their failure to pass Sun's compatibility test suite". A complete list of all the proceedings (in PDF) is here Hervegirod 21:40, 6 May 2007 (UTC)


See also Visual_J++#Litigation_against_J.2B.2B . It was a subject of the 1998 DOJ antitrust trial, the 1997 trademark licensing dispute, and then Sun's private 1.6 billion dollar antitrust lawsuit against Microsoft.

[edit] Fair use rationale for Image:Duke.gif

Image:Duke.gif is being used on this article. I notice the image page specifies that the image is being used under fair use but there is no explanation or rationale as to why its use in Wikipedia articles constitutes fair use. In addition to the boilerplate fair use template, you must also write out on the image description page a specific explanation or rationale for why using this image in each article is consistent with fair use.

Please go to the image description page and edit it to include a fair use rationale. Using one of the templates at Wikipedia:Fair use rationale guideline is an easy way to ensure that your image is in compliance with Wikipedia policy, but remember that you must complete the template. Do not simply insert a blank template on an image page.

If there is other other fair use media, consider checking that you have specified the fair use rationale on the other images used on this page. Note that any fair use images uploaded after 4 May, 2006, and lacking such an explanation will be deleted one week after they have been uploaded, as described on criteria for speedy deletion. If you have any questions please ask them at the Media copyright questions page. Thank you.BetacommandBot 03:28, 3 June 2007 (UTC)

I have changed it to the BSD license --Racklever 15:31, 8 June 2007 (UTC)

[edit] External links section

This article has quite a linkfarm, I tagged it. See WP:EL for information about this and why I tagged it. Also, see WP:NOT particularly the part about WIkipedia not being a web directory. Aaron Bowen 11:46, 14 June 2007 (UTC)

[edit] "Like in C++ and most other object-oriented languages..."

I just wanted to note that in C++, there is very little distinction between user-defined and built-in types: both can be allocated on either the stack or the free store, pointers and references to both can exist, etc. Probably the only difference between them in C++ is that you can't derive a new class from a built-in type. Since this is a basic language philosophy of C++ (I can go find the part about this in The C++ Programming Language if you want), and very different from the object-primitive separation in Java, I think C++ shouldn't be used as an example (as in "Like in C++...") here. Dr. Sunglasses 18:18, 25 June 2007 (UTC)

[edit] Howto tag

I have removed the howto tag because it is inappropriate. For example the Reflection (computer science) article contains more sophisticated code than the simple Hello world of the formerly tagged section, and one cannot appreciate, much less read, that article without the ability to read code.

It is like attempting to read an article on music theory without including a few bars of music to denote the topic of discussion. It is not inappropriate to have an article on music for those who can read music. By analogy, it is not inappropriate to have a programming language article for those who can read code; if an article needs explanation, one can listen to the music, for a music article. There are entire CD's which discuss Beethoven's Ninth Symphony, for example. One can watch a program animation, or a program visualization, for a code article.

It is unjust to force the content of a code article to another venue entirely, just for the sake of an inappropriate tag. --Ancheta Wis 01:49, 29 July 2007 (UTC)

I'm restoring this. WP:OTHERSTUFFEXISTS is not a good argument. And this isn't "a few bars", it's a series of complete stub programs which are mostly completely opaque to people who don't speak the language. Seriously, we need sample code to explain Java applets? Why is that? Example code is a lazy way of expanding an article without really improving it. Chris Cunningham 11:54, 29 July 2007 (UTC)
This just came in: iPhone Hello world. It's a canonical way to learn about a language and its platform. Code samples show subtle things about a language that take a lot of text to convey, otherwise. For example, the fact that prolog returns a boolean value at every call, a nit of a detail that you have to know or your code doesn't work. --Ancheta Wis 17:02, 29 July 2007 (UTC)
I'm confused. Yes, it is obvious that when writing a tutorial, code examples are very helpful. But this isn't a tutorial. The tag explicitly states that Wikipedia is not here to teach subject matter. That Prolog returns "yes" or "no" to everything is a fundamental part of its design which is essential to understanding how the language works; that's a completely different kettle of fish to whether we need to actually provide sample code for a Java applet to explain what it is. Chris Cunningham 17:57, 29 July 2007 (UTC)
I'd agree. Anyone reading this article will be reading for the overview of the Java language - the history, notable events within Java's history et al. The examples aren't relevant in that context. If people want to read wiki to learn Java... well, they'd be far better off reading more accurate sources :p

Minkythecat (talk) 13:52, 11 March 2008 (UTC)

[edit] Difficult for Non-Computer Science Reader

Coudl something be added to this article that would make it clear to a non-expert reader what the importance of Java is? --Girl2k 16:25, 30 July 2007 (UTC)

I'm trying to cut down on the unnecessary geekishness just now. Once the article is shorter and has more focus I'll try to add a section about Java's applications and how its use has affected the computing world. Chris Cunningham 17:45, 30 July 2007 (UTC)

I appreciate the idea of adding a section concerning use of Java, but I'm concerned about the general difficulty of the main article for a non-computer science reader. The point of Wikipedia, it seems to me, is to create articles for common folks who have, let's say, graduated high school. This article is opaque to me and I have a liberal arts MA. The article assumes far too much about my prior knowledge. Trying to understand the definitions doesn't work because the linked terms simply hyper me over to other, similarly difficult articles. The article (and many others) would benefit from a knowledgeable person adding simple metaphors. For example, is a library a toolbox and each class is a tool? Also, defining each term separately, rather than tossing six terms in a sentence would be great. Thanks. BeholdMan (talk) 05:35, 7 February 2008 (UTC)

[edit] Importance rating

How come that this article gets only a "Mid" importance rating, when APL (sic!) gets a "High" rating?? I can only laugh on that. While APL is nothing more than an object of ridicule nowadays, Java is one of the most important - if not THE most important - enterprise software development platforms today. —Preceding unsigned comment added by 80.108.109.173 (talk) 19:13, 23 September 2007 (UTC)

Or it's not the most important enterprise software development platform today. It really depends on who you're talking to. You might make an argument for most /popular/ but if you're going to do that, include some statistics, thanks.137.48.130.200 17:56, 8 October 2007 (UTC)

@80: Even C++ has mid-importance in the Computer Science WikiProject. For Wikipedia:WikiProject Programming languages evaluation, this article should have high importance; in terms of Computer Science; I'm not so sure. If you think that APL should also be rated as mid-importance, or that all major programming languages should be high-importance, please effect that change (ideally with discussion first here). Evaluation of importance is specific to a WikiProject's need to prioritize improving certain articles, and is a tool, not a description to help or hurt its subject's image. GracenotesT § 06:46, 14 October 2007 (UTC)

[edit] Java update

Every time I start up my laptop, I get an annoying reminder that there is a Java update ready to download and install. A few minutes ago, I finally gave in and installed it. The problem is, I don't know what the hell Java is, and this article doesn't really help. The installation set-up only said that the download will make my "Internet experience richer." So, can someone explain what the Java program or whatever really is? This article, like almost all computer-related articles on Wikipedia, is all technical jargon and doesn't make any sense to me. —Preceding unsigned comment added by 71.107.134.163 (talk) 11:54, 20 October 2007 (UTC) I can download the update, and I can download a Shockwave Update. 65.43.178.200 12:11, 12 November 2007 (UTC)Kinz

What you have is a Java Plugin that runs Java applets in your browser, that are similar to Flash and ActiveX plugins. Those programs are used to create better interactive pages and normally the user will be unaware of it existence if everything is right and that is the reason for the constant updates. The other plataforms also have similar updates, but normally without notifying the user. This aspect of the Java technology is, however, a small portion (and quite francly one part in disuse) and this article had to deal with the entire aspect of the technology, making a good part of this technical jargon and doesnt making much sense to ppl outside of the software development market. Alvaroludolf 12:48, 25 October 2007 (UTC)
Not that this is a general discussion forum or anything, but for what it's worth the relevant article is Java (Sun) and the "technical jargon" here is no worse than that on random chemistry articles. For some reason, people seem to assume that computer science shouldn't be treated in a scientific manner on Wikipedia even though other sciences are. Chris Cunningham 12:58, 25 October 2007 (UTC)
I'm sorry you couldn't get the answers you needed. I agree the article is too techie. Maybe a techie will improve this. I'll try to help. In plain English, Java is a software technology that lets Web pages run programs on your computer, if you choose to allow them to. For example, if you want to play Yahoo Text Twist, you go to http://get.games.yahoo.com/proddesc?gamekey=texttwist and click on "Play Web Game (free)". You will see the Java symbol and a progress bar as the game loads. The Java technology is what runs the game in your browser.
Java is considered much safer than its competitor, Microsoft's ActiveX technology. The United States Computer Emergency Readiness Team, a division of the US Department of Homeland Security, has noted numerous critical security flaws in ActiveX, including in MySpace and Facebook, which could allow an attacker to take control of your computer. They "are currently unaware of a practical solution to this problem", and therefore recommend that you disable all ActiveX capability in Internet Explorer. They give instructions to do so, but an easier solution is to use a browser like Mozilla Firefox that inherently does not support (run) ActiveX programs. You will still need Internet Explorer and its ActiveX to get the latest Windows security fixes from the Microsoft Update page. These are issued the second Tuesday of each month and you need them for your safety. Other than that, Internet Explorer and ActiveX are unsafe and should not be used.
The automatic updating of your Java can be controlled if you like. Going back to playing the Text Twist game, you will see a Java icon in at the bottom of your screen. I think it's supposed to represent a cup of coffee ("Java"), but it's two blue lines with a red thing above. The large version is shown in this article. If in doubt, hover the mouse pointer over it and it will say "Java (TM) Platform, Standard Edition". Right-click this icon, then click "Open Control Panel". Click the "Update" tab. If you wish, you can uncheck "Check for updates automatically". However, these updates too may be for security reasons, so it's probably better to continue to allow them and install them.
65.43.178.200 has made the common error of confusing Java and Javascript. As Cynic783 points out, these are two completely different technologies. The reasons for this unfortunate confusion can be found in the Javascript article if you are interested. The important thing is that Javascript is also dangerous, the source of many current security issues for all Web browsers. The aforementioned US-CERT recommends adding the NoScript program to your Firefox browser. With this free addition, you can disable all Javascripting by default. When a trusted site (your bank) wants to run a Javascript, you can click and verify that it comes from the trusted source and allow it permanently (it won't have to ask you again). When a site (like Yahoo email) tries to run scripts from multiple sources, you can allow the script from Yahoo while forbidding the script from advertising.com or DoubleClick.net. This ability to discriminate among scripts coming from the same Web page is not available in Internet Explorer.
I'm not connected with Sun Microsystems, Mozilla/Firefox, or NoScript. I'm just another dumb user trying to stay safe in a shark-infested Internet. All of the above is free software and the POV is that of the US Dept. of Homeland Security. I agree that these articles should be more accessible to average users. Hope this helps. 24.110.24.175 (talk) 10:54, 19 February 2008 (UTC)

[edit] Java or Java Script?

Should it be called Java or should it be called Java Script? 65.43.178.200 12:09, 12 November 2007 (UTC)Kinz

The programming language is called Java. JavaScript is a scripting language used mainly for web page functionality. Java is not JavaScript - JavaScript was confusingly named to play off of the Java name.

I've not checked, but as the two are distinct entities, JavaScript should have it's own page. Minkythecat (talk) 13:56, 11 March 2008 (UTC)

[edit] Java Updated

I have just updated my Java Script. 65.43.178.200 12:22, 12 November 2007 (UTC)Kinz

Javascript is a separate language with different syntax. I have never heard anyone say they have just updated their Java script...they say Java app or applet or class or jar file. I have been developing Java software for 11+ years.Cynic783 18:15, 14 November 2007 (UTC)

[edit] Bad OOP example

I think the OddEven class is a bad OOP example. It is a bad practice to take user inputs from a constructor. I suggest that the constructor should be changed to take an int as parameter and the user input is taken from the main method. Chinhnt2k3 (talk) 04:48, 17 November 2007 (UTC)Chinhnt2k3

I tried to improve the example a bit. Hervegirod (talk) 12:38, 17 November 2007 (UTC)
Good job! Maybe you should update the explanation below it too Chinhnt2k3 (talk) 07:32, 20 November 2007 (UTC)Chinhnt2k3

[edit] "Java Class"

There is a random section, the first one, in fact, called "Java Class," explaining that anyone considering taking a Java class should not, especially "if it is the last class of the day." I am having trouble getting rid of it. Franciscoh (talk) 18:54, 21 November 2007 (UTC)

[edit] Too technical

Wiki is great for getting a quick and dirty definition (that may take hours to research via the web) - except for technical matters! I would like to urge the techies to try to speak English - at least for the intro to their topics. I hear about Java all the time, but have no idea what it is. This page on Java doesn't help. The very first sentence should explain what Java is - because that is why we are coming to wiki to search for it. How do i tell if a web page i'm looking at is written in Java or something else? torus742 67.180.217.46 (talk) 06:28, 19 January 2008 (UTC)

It explains that Java is a programming language. Programming languages have a great deal of uses, only one of which is writing web pages. There's no definitive way to tell what language a web page is "written in"; it can be manually created by an author with HTML, or it can be generated by a web server which runs programs written in Java or PHP (amongst others). There's only so much an article lead can be simplified when it deals with a complicated subject; a panda can be explained as a big bear-like thing which lives in China, because "bear" and "China" are pretty familiar concepts to people. Web servers and language compilers aren't, but it's all we can define programming languages in terms of. Chris Cunningham (talk) 10:58, 19 January 2008 (UTC)

[edit] Missing topics

I miss a topic about the evolution of Java, it's many versions, and what changed between them. A timeline would also be great. Ramiro Pereira de Magalhães (talk) 17:49, 29 January 2008 (UTC)

[edit] Examples

These are far too detailed and far too much like tutorial content. They should all be removed, and only snippets should be re-added if absolutely necessary. Chris Cunningham (not at work) - talk 19:16, 14 March 2008 (UTC)

Totally agree. People would look at this page to find out about Java the language, not for programming examples. Minkythecat (talk) 13:12, 30 April 2008 (UTC)
I agree as well. Though I do think the "Hello World" program should be kept (maybe a program for each section, just to show the differences?). Also, along with the extraneous programs, the explanation of each one (to the point where the explanation is 5 times longer than the program) should be eliminated. --Tustin2121 (talk) 21:18, 9 June 2008 (UTC)

[edit] Productivity

This section should be removed: It is clearly POV, and using a very old reference (Java 1.2.1, benchmarks seem to be from 1999) whose conclusion are also very questionable, even at the time. Some quotes:

  • In terms of run time and memory consumption, (scripting languages) often turn out better than Java and not much worse than C or C++. On the contrary, the last Computer language Shootout shows a factor 13 between Java and Python or Perl, 29 between Java and Tcl, 15 between Java and PHP, etc... I don't present the figures with C / C++ because it would be ridiculous,
  • The article deal with some very specific types of programs (string manipulation and search in a dictionary). The section makes a generalization that is not in the original source conclusions.
  • It is an interesting observation that despite the existence of hash table implementations in both the Java and the C++ class libraries none of the non-script programmers used them (but rather implemented a tree solution by hand) : I never saw anyone redesigning by hand collections implementations in Java since a lot of years, except for very specific cases (for example Hashtables with an exceptionally huge number of key-value pairs)
  • In contrast, essentially all of the non-script programmers chose either of the following solutions. In the simple case, they simply store the whole dictionary in an array : No real Java programmer would do that. I bet that they asked C programmers with no experience in other languages do the programming in Java (which I may understand, there were less Java programmers in 1997 !!)
  • The Java work times appear to be a bit pessimistic, probably due to the lower language experience of the 1997/1998 Java programmers. : sic !!!
  • Even in the group-aggregated view with its much larger groups, the difference between C/C++ and scripts is not significant, only Java is less productive than scripts. Hervegirod (talk) 22:25, 18 March 2008 (UTC)
Finally removed this part, we need to find a reference which is less flawed and also deals about a version of Java greater than Java 1.2.1 Hervegirod (talk) 09:28, 29 March 2008 (UTC)


[edit] Performance

The article claims:

Dynamic recompilation can achieve optimizations superior to static compilation because the dynamic compiler can base optimizations on knowledge about the runtime environment and the set of loaded classes, and can identify the hot spots (parts of the program, often inner loops, that take up the most execution time)

This is bogus. You can profile a static compiled programm and give this input to your compiler to recompile your programm with this information. —Preceding unsigned comment added by 87.123.216.181 (talk) 23:11, 14 May 2008 (UTC)