-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathJUnitHttpProxy.http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJava_%28programming_language%29.tmp
1722 lines (1701 loc) · 245 KB
/
JUnitHttpProxy.http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FJava_%28programming_language%29.tmp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en" dir="ltr" class="client-nojs">
<head>
<meta charset="UTF-8" /><title>Java (programming language) - Wikipedia, the free encyclopedia</title>
<meta name="generator" content="MediaWiki 1.22wmf21" />
<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Java_(programming_language)&action=edit" />
<link rel="edit" title="Edit this page" href="/w/index.php?title=Java_(programming_language)&action=edit" />
<link rel="apple-touch-icon" href="//bits.wikimedia.org/apple-touch/wikipedia.png" />
<link rel="shortcut icon" href="//bits.wikimedia.org/favicon/wikipedia.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Wikipedia (en)" />
<link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd" />
<link rel="copyright" href="//creativecommons.org/licenses/by-sa/3.0/" />
<link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom" />
<link rel="canonical" href="http://en.wikipedia.org/wiki/Java_(programming_language)" />
<link rel="stylesheet" href="//bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&lang=en&modules=ext.gadget.DRN-wizard%2CReferenceTooltips%2Ccharinsert%2Cteahouse%7Cext.geshi.local%7Cext.rtlcite%2Cwikihiero%7Cext.uls.nojs%7Cext.visualEditor.viewPageTarget.noscript%7Cmediawiki.legacy.commonPrint%2Cshared%7Cmw.PopUpMediaTransform%7Cskins.vector&only=styles&skin=vector&*" />
<meta name="ResourceLoaderDynamicStyles" content="" />
<link rel="stylesheet" href="//bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&lang=en&modules=site&only=styles&skin=vector&*" />
<style>a:lang(ar),a:lang(ckb),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}
/* cache key: enwiki:resourceloader:filter:minify-css:7:0de201fdea5d684523607ed88007b127 */</style>
<script src="//bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&lang=en&modules=startup&only=scripts&skin=vector&*"></script>
<script>if(window.mw){
mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Java_(programming_language)","wgTitle":"Java (programming language)","wgCurRevisionId":578178986,"wgRevisionId":578178986,"wgArticleId":15881,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["All articles with dead external links","Articles with dead external links from June 2012","All articles with unsourced statements","Articles with unsourced statements from April 2013","Articles with unsourced statements from June 2013","Articles needing cleanup from January 2012","All pages needing cleanup","Articles containing how-to sections","Wikipedia external links cleanup from March 2013","Wikipedia spam cleanup from March 2013","Articles needing additional references from May 2013","All articles needing additional references","Articles needing cleanup from May 2013","Articles with dead external links from June 2011","C programming language family","Class-based programming languages","Concurrent programming languages","Cross-platform software","Java platform","Java programming language","Java specification requests","JVM programming languages","Object-oriented programming languages","Programming languages created in 1995","Sun Microsystems"],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"Java_(programming_language)","wgIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgWikiEditorEnabledModules":{"toolbar":true,"dialogs":true,"hidesig":true,"templateEditor":false,"templates":false,"preview":false,"previewDialog":false,"publish":false,"toc":false},"wgArticleFeedbackv5Permissions":{"aft-reader":true,"aft-member":false,"aft-editor":false,"aft-monitor":false,"aft-administrator":false,"aft-oversighter":false,"aft-noone":false},"wgVisualEditor":{"isPageWatched":false,"magnifyClipIconURL":"//bits.wikimedia.org/static-1.22wmf21/skins/common/images/magnify-clip.png","pageLanguageCode":"en","pageLanguageDir":"ltr"},"wikilove-recipient":"","wikilove-anon":0,"wgGuidedTourHelpGuiderUrl":"Help:Guided tours/guider","wgULSAcceptLanguageList":[],"wgFlaggedRevsParams":{"tags":{"status":{"levels":1,"quality":2,"pristine":3}}},"wgStableRevisionId":null,"wgCategoryTreePageCategoryOptions":"{\"mode\":0,\"hideprefix\":20,\"showcount\":true,\"namespaces\":false}","Geo":{"city":"","country":""},"wgNoticeProject":"wikipedia","aftv5Article":{"id":15881,"title":"Java (programming language)","namespace":0,"categories":["All articles needing additional references","All articles with dead external links","All articles with unsourced statements","All pages needing cleanup","Articles containing how-to sections","Articles needing additional references from May 2013","Articles needing cleanup from January 2012","Articles needing cleanup from May 2013","Articles with dead external links from June 2011","Articles with dead external links from June 2012","Articles with unsourced statements from April 2013","Articles with unsourced statements from June 2013","C programming language family","Class-based programming languages","Concurrent programming languages","Cross-platform software","JVM programming languages","Java platform","Java programming language","Java specification requests","Object-oriented programming languages","Programming languages created in 1995","Sun Microsystems","Wikipedia external links cleanup from March 2013","Wikipedia spam cleanup from March 2013"],"permissionLevel":false},"wgWikibaseItemId":"Q251"});
}</script><script>if(window.mw){
mw.loader.implement("user.options",function(){mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"disablesuggest":0,"editfont":"default","editondblclick":0,"editsection":1,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":0,"extendwatchlist":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"imagesize":2,"justify":0,"math":0,"minordefault":0,"newpageshidepatrolled":0,"nocache":0,"noconvertlink":0,"norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"rcdays":7,"rclimit":50,"rememberpassword":0,"rows":25,"searchlimit":20,"showhiddencats":false,"shownumberswatching":1,"showtoc":1,"showtoolbar":1,"skin":"vector","stubthreshold":0,"thumbsize":4,"underline":2,"uselivepreview":0,"usenewrc":0,"vector-simplesearch":1,"watchcreations":1,"watchdefault":0,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,"watchlisthidebots"
:0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,"useeditwarning":1,"prefershttps":1,"flaggedrevssimpleui":1,"flaggedrevsstable":0,"flaggedrevseditdiffs":true,"flaggedrevsviewdiffs":false,"usebetatoolbar":1,"usebetatoolbar-cgd":1,"aftv5-last-filter":null,"visualeditor-enable":0,"visualeditor-enable-experimental":0,"visualeditor-betatempdisable":0,"wikilove-enabled":1,"echo-subscriptions-web-page-review":true,"echo-subscriptions-email-page-review":false,"ep_showtoplink":false,"ep_bulkdelorgs":false,"ep_bulkdelcourses":true,"ep_showdyk":true,"echo-notify-show-link":true,"echo-show-alert":true,"echo-email-frequency":0,"echo-email-format":"html","echo-subscriptions-email-system":true,"echo-subscriptions-web-system":true,"echo-subscriptions-email-other":false,"echo-subscriptions-web-other":true,"echo-subscriptions-email-edit-user-talk":false,"echo-subscriptions-web-edit-user-talk":true,
"echo-subscriptions-email-reverted":false,"echo-subscriptions-web-reverted":true,"echo-subscriptions-email-article-linked":false,"echo-subscriptions-web-article-linked":false,"echo-subscriptions-email-mention":false,"echo-subscriptions-web-mention":true,"echo-subscriptions-web-edit-thank":true,"echo-subscriptions-email-edit-thank":false,"gettingstarted-task-toolbar-show-intro":true,"uls-preferences":"","language":"en","variant-gan":"gan","variant-iu":"iu","variant-kk":"kk","variant-ku":"ku","variant-shi":"shi","variant-sr":"sr","variant-tg":"tg","variant-uz":"uz","variant-zh":"zh","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"searchNs100":false,"searchNs101":false,"searchNs108":false,"searchNs109":false,"searchNs446":false,"searchNs447":false
,"searchNs710":false,"searchNs711":false,"searchNs828":false,"searchNs829":false,"gadget-teahouse":1,"gadget-ReferenceTooltips":1,"gadget-DRN-wizard":1,"gadget-charinsert":1,"gadget-mySandbox":1,"variant":"en"});},{},{});mw.loader.implement("user.tokens",function(){mw.user.tokens.set({"editToken":"+\\","patrolToken":false,"watchToken":false});},{},{});
/* cache key: enwiki:resourceloader:filter:minify-js:7:f518b864f4c01710d57ac85913b8c7f0 */
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","mediawiki.legacy.ajax","ext.centralauth.centralautologin","ext.visualEditor.viewPageTarget.init","ext.wikimediaShopLink.core","ext.uls.init","ext.uls.interface","wikibase.client.init","ext.centralNotice.bannerController","skins.vector.js"]);
}</script>
<style type="text/css">/*<![CDATA[*/
.source-java {line-height: normal;}
.source-java li, .source-java pre {
line-height: normal; border: 0px none white;
}
/**
* GeSHi Dynamically Generated Stylesheet
* --------------------------------------
* Dynamically generated stylesheet for java
* CSS class: source-java, CSS id:
* GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
* (http://qbnz.com/highlighter/ and http://geshi.org/)
* --------------------------------------
*/
.java.source-java .de1, .java.source-java .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;font-family: monospace, monospace;}
.java.source-java {font-family:monospace;}
.java.source-java .imp {font-weight: bold; color: red;}
.java.source-java li, .java.source-java .li1 {font-weight: normal; vertical-align:top;}
.java.source-java .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.java.source-java .li2 {font-weight: bold; vertical-align:top;}
.java.source-java .kw1 {color: #000000; font-weight: bold;}
.java.source-java .kw2 {color: #000066; font-weight: bold;}
.java.source-java .kw3 {color: #003399;}
.java.source-java .kw4 {color: #000066; font-weight: bold;}
.java.source-java .co1 {color: #666666; font-style: italic;}
.java.source-java .co2 {color: #006699;}
.java.source-java .co3 {color: #008000; font-style: italic; font-weight: bold;}
.java.source-java .coMULTI {color: #666666; font-style: italic;}
.java.source-java .es0 {color: #000099; font-weight: bold;}
.java.source-java .br0 {color: #009900;}
.java.source-java .sy0 {color: #339933;}
.java.source-java .st0 {color: #0000ff;}
.java.source-java .nu0 {color: #cc66cc;}
.java.source-java .me1 {color: #006633;}
.java.source-java .me2 {color: #006633;}
.java.source-java .ln-xtra, .java.source-java li.ln-xtra, .java.source-java div.ln-xtra {background-color: #ffc;}
.java.source-java span.xtra { display:block; }
/*]]>*/
</style><style type="text/css">/*<![CDATA[*/
.source-html4strict {line-height: normal;}
.source-html4strict li, .source-html4strict pre {
line-height: normal; border: 0px none white;
}
/**
* GeSHi Dynamically Generated Stylesheet
* --------------------------------------
* Dynamically generated stylesheet for html4strict
* CSS class: source-html4strict, CSS id:
* GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
* (http://qbnz.com/highlighter/ and http://geshi.org/)
* --------------------------------------
*/
.html4strict.source-html4strict .de1, .html4strict.source-html4strict .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;font-family: monospace, monospace;}
.html4strict.source-html4strict {font-family:monospace;}
.html4strict.source-html4strict .imp {font-weight: bold; color: red;}
.html4strict.source-html4strict li, .html4strict.source-html4strict .li1 {font-weight: normal; vertical-align:top;}
.html4strict.source-html4strict .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.html4strict.source-html4strict .li2 {font-weight: bold; vertical-align:top;}
.html4strict.source-html4strict .kw2 {color: #000000; font-weight: bold;}
.html4strict.source-html4strict .kw3 {color: #000066;}
.html4strict.source-html4strict .es0 {color: #000099; font-weight: bold;}
.html4strict.source-html4strict .br0 {color: #66cc66;}
.html4strict.source-html4strict .sy0 {color: #66cc66;}
.html4strict.source-html4strict .st0 {color: #ff0000;}
.html4strict.source-html4strict .nu0 {color: #cc66cc;}
.html4strict.source-html4strict .sc-2 {color: #404040;}
.html4strict.source-html4strict .sc-1 {color: #808080; font-style: italic;}
.html4strict.source-html4strict .sc0 {color: #00bbdd;}
.html4strict.source-html4strict .sc1 {color: #ddbb00;}
.html4strict.source-html4strict .sc2 {color: #009900;}
.html4strict.source-html4strict .ln-xtra, .html4strict.source-html4strict li.ln-xtra, .html4strict.source-html4strict div.ln-xtra {background-color: #ffc;}
.html4strict.source-html4strict span.xtra { display:block; }
/*]]>*/
</style><script src="//bits.wikimedia.org/geoiplookup"></script><link rel="dns-prefetch" href="//meta.wikimedia.org" /><!--[if lt IE 7]><style type="text/css">body{behavior:url("/w/static-1.22wmf21/skins/vector/csshover.min.htc")}</style><![endif]--></head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-Java_programming_language skin-vector action-view vector-animateLayout">
<div id="mw-page-base" class="noprint"></div>
<div id="mw-head-base" class="noprint"></div>
<div id="content" class="mw-body" role="main">
<a id="top"></a>
<div id="mw-js-message" style="display:none;"></div>
<div id="siteNotice"><!-- CentralNotice --></div>
<h1 id="firstHeading" class="firstHeading" lang="en"><span dir="auto">Java (programming language)</span></h1>
<div id="bodyContent">
<div id="siteSub">From Wikipedia, the free encyclopedia</div>
<div id="contentSub"></div>
<div id="jump-to-nav" class="mw-jump">
Jump to: <a href="#mw-navigation">navigation</a>, <a href="#p-search">search</a>
</div>
<div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><div class="dablink">"Java language" redirects here. For the natural language from the Indonesian island of Java, see <a href="/wiki/Javanese_language" title="Javanese language">Javanese language</a>.</div>
<div class="dablink">Not to be confused with <a href="/wiki/JavaScript" title="JavaScript">JavaScript</a>.</div>
<table class="infobox vevent" cellspacing="3" style="border-spacing:3px;width:22em;">
<caption class="summary">Java</caption>
<tr>
<td colspan="2" style="text-align:center;"><a href="/wiki/File:Java_logo_and_wordmark.svg" class="image"><img alt="Java logo and wordmark.svg" src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Java_logo_and_wordmark.svg/100px-Java_logo_and_wordmark.svg.png" width="100" height="183" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Java_logo_and_wordmark.svg/150px-Java_logo_and_wordmark.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Java_logo_and_wordmark.svg/200px-Java_logo_and_wordmark.svg.png 2x" /></a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;"><a href="/wiki/Programming_paradigm" title="Programming paradigm">Paradigm(s)</a></th>
<td><a href="/wiki/Multi-paradigm_programming_language" title="Multi-paradigm programming language" class="mw-redirect">multi-paradigm</a>: <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented</a>, <a href="/wiki/Structured_programming" title="Structured programming">structured</a>, <a href="/wiki/Imperative_programming" title="Imperative programming">imperative</a>, <a href="/wiki/Generic_programming" title="Generic programming">generic</a>, <a href="/wiki/Reflective_programming" title="Reflective programming" class="mw-redirect">reflective</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;">Appeared in</th>
<td>1995<span style="display:none"> (<span class="bday dtstart published updated">1995</span>)</span><sup id="cite_ref-oraclejavahistory_1-0" class="reference"><a href="#cite_note-oraclejavahistory-1"><span>[</span>1<span>]</span></a></sup></td>
</tr>
<tr>
<th scope="row" style="text-align:left;">Designed by</th>
<td><a href="/wiki/James_Gosling" title="James Gosling">James Gosling</a> and<br />
<a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;"><a href="/wiki/Software_developer" title="Software developer">Developer</a></th>
<td class="organiser"><a href="/wiki/Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;"><a href="/wiki/Software_release_life_cycle" title="Software release life cycle">Stable release</a></th>
<td>Java Standard Edition 7 Update 45 (1.7.45) (October 15, 2013<span class="noprint">; 7 days ago</span><span style="display:none"> (<span class="bday dtstart published updated">2013-10-15</span>)</span>)</td>
</tr>
<tr>
<th scope="row" style="text-align:left;"><a href="/wiki/Type_system" title="Type system">Typing discipline</a></th>
<td><a href="/wiki/Type_system" title="Type system">Static, strong, safe</a>, <a href="/wiki/Nominative_type_system" title="Nominative type system">nominative</a>, <a href="/wiki/Manifest_typing" title="Manifest typing">manifest</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;"><a href="/wiki/Programming_language_implementation" title="Programming language implementation">Major implementations</a></th>
<td><a href="/wiki/OpenJDK" title="OpenJDK">OpenJDK</a>, <a href="/wiki/Category:Java_virtual_machine" title="Category:Java virtual machine">many others</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;"><a href="/wiki/Dialect_(computing)" title="Dialect (computing)">Dialects</a></th>
<td><a href="/wiki/Generic_Java" title="Generic Java">Generic Java</a>, <a href="/wiki/Pizza_(programming_language)" title="Pizza (programming language)">Pizza</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;">Influenced by</th>
<td><a href="/wiki/Ada_(programming_language)" title="Ada (programming language)">Ada 83</a>, <a href="/wiki/C%2B%2B" title="C++">C++</a>, <a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>,<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span>[</span>2<span>]</span></a></sup> <a href="/wiki/Eiffel_(programming_language)" title="Eiffel (programming language)">Eiffel</a>,<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/Generic_Java" title="Generic Java">Generic Java</a>, <a href="/wiki/Mesa_(programming_language)" title="Mesa (programming language)">Mesa</a>,<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span>[</span>4<span>]</span></a></sup> <a href="/wiki/Modula-3" title="Modula-3">Modula-3</a>,<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span>[</span>5<span>]</span></a></sup> <a href="/wiki/Oberon_(programming_language)" title="Oberon (programming language)">Oberon</a>,<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span>[</span>6<span>]</span></a></sup> <a href="/wiki/Objective-C" title="Objective-C">Objective-C</a>,<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span>[</span>7<span>]</span></a></sup> <a href="/wiki/UCSD_Pascal" title="UCSD Pascal">UCSD Pascal</a>,<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span>[</span>8<span>]</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span>[</span>9<span>]</span></a></sup> <a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;">Influenced</th>
<td><a href="/wiki/Ada_(programming_language)" title="Ada (programming language)">Ada 2005</a>, <a href="/wiki/BeanShell" title="BeanShell">BeanShell</a>, <a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>, <a href="/wiki/Clojure" title="Clojure">Clojure</a>, <a href="/wiki/D_(programming_language)" title="D (programming language)">D</a>, <a href="/wiki/ECMAScript" title="ECMAScript">ECMAScript</a>, <a href="/wiki/Groovy_(programming_language)" title="Groovy (programming language)">Groovy</a>, <a href="/wiki/J_Sharp" title="J Sharp">J#</a>, <a href="/wiki/JavaScript" title="JavaScript">JavaScript</a>, <a href="/wiki/PHP" title="PHP">PHP</a>, <a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a>, <a href="/wiki/Scala_(programming_language)" title="Scala (programming language)">Scala</a>, <a href="/wiki/Seed7" title="Seed7">Seed7</a>, <a href="/wiki/Vala_(programming_language)" title="Vala (programming language)">Vala</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;">Implementation language</th>
<td><a href="/wiki/C_(programming_language)" title="C (programming language)">C</a> and <a href="/wiki/C%2B%2B" title="C++">C++</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;"><a href="/wiki/Operating_system" title="Operating system">OS</a></th>
<td><a href="/wiki/Cross-platform" title="Cross-platform">Cross-platform</a> (multi-platform)</td>
</tr>
<tr>
<th scope="row" style="text-align:left;"><a href="/wiki/Software_license" title="Software license">License</a></th>
<td><a href="/wiki/GNU_General_Public_License" title="GNU General Public License">GNU General Public License</a>, <a href="/wiki/Java_Community_Process" title="Java Community Process">Java Community Process</a></td>
</tr>
<tr>
<th scope="row" style="text-align:left;">Usual <a href="/wiki/Filename_extension" title="Filename extension">filename extensions</a></th>
<td>.java, .class, .jar</td>
</tr>
<tr>
<th scope="row" style="text-align:left;">Website</th>
<td><a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/">For Java Developers</a></td>
</tr>
<tr>
<td colspan="2" class="hlist" style="text-align:center;">
<ul>
<li><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/16px-Wikibooks-logo-en-noslogan.svg.png" width="16" height="16" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/24px-Wikibooks-logo-en-noslogan.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/32px-Wikibooks-logo-en-noslogan.svg.png 2x" /> <a href="//en.wikibooks.org/wiki/Java_Programming" class="extiw" title="wikibooks:Java Programming">Java Programming</a> at Wikibooks</li>
</ul>
</td>
</tr>
</table>
<p><b>Java</b> is a <a href="/wiki/Computer_programming_language" title="Computer programming language" class="mw-redirect">computer programming language</a> that is <a href="/wiki/Concurrent_computing" title="Concurrent computing">concurrent</a>, <a href="/wiki/Class-based" title="Class-based" class="mw-redirect">class-based</a>, <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented</a>, and specifically designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere" (WORA), meaning that code that runs on one platform does not need to be recompiled to run on another. Java applications are typically <a href="/wiki/Compiler" title="Compiler">compiled</a> to <a href="/wiki/Java_bytecode" title="Java bytecode">bytecode</a> (<a href="/wiki/Class_(file_format)" title="Class (file format)" class="mw-redirect">class file</a>) that can run on any <a href="/wiki/Java_virtual_machine" title="Java virtual machine">Java virtual machine</a> (JVM) regardless of <a href="/wiki/Computer_architecture" title="Computer architecture">computer architecture</a>. Java is, as of 2012, one of the most popular programming languages in use, particularly for client-server web applications, with a reported 9 million developers.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span>[</span>10<span>]</span></a></sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span>[</span>11<span>]</span></a></sup> Java was originally developed by <a href="/wiki/James_Gosling" title="James Gosling">James Gosling</a> at <a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> (which has since <a href="/wiki/Sun_acquisition_by_Oracle" title="Sun acquisition by Oracle">merged into Oracle Corporation</a>) and released in 1995 as a core component of Sun Microsystems' <a href="/wiki/Java_(software_platform)" title="Java (software platform)">Java platform</a>. The language derives much of its <a href="/wiki/Syntax_(programming_languages)" title="Syntax (programming languages)">syntax</a> from <a href="/wiki/C_(programming_language)" title="C (programming language)">C</a> and <a href="/wiki/C%2B%2B" title="C++">C++</a>, but it has fewer <a href="/wiki/Low-level_programming_language" title="Low-level programming language">low-level</a> facilities than either of them.</p>
<p>The original and <a href="/wiki/Reference_implementation_(computing)" title="Reference implementation (computing)" class="mw-redirect">reference implementation</a> Java <a href="/wiki/Compiler" title="Compiler">compilers</a>, virtual machines, and <a href="/wiki/Library_(computing)" title="Library (computing)">class libraries</a> were developed by Sun from 1991 and first released in 1995. As of May 2007, in compliance with the specifications of the <a href="/wiki/Java_Community_Process" title="Java Community Process">Java Community Process</a>, Sun relicensed most of its Java technologies under the <a href="/wiki/GNU_General_Public_License" title="GNU General Public License">GNU General Public License</a>. Others have also developed alternative implementations of these Sun technologies, such as the <a href="/wiki/GNU_Compiler_for_Java" title="GNU Compiler for Java">GNU Compiler for Java</a> (bytecode compiler), <a href="/wiki/GNU_Classpath" title="GNU Classpath">GNU Classpath</a> (standard libraries), and <a href="/wiki/IcedTea" title="IcedTea">IcedTea</a>-Web (browser plugin for applets).</p>
<div id="toc" class="toc">
<div id="toctitle">
<h2>Contents</h2>
</div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#History"><span class="tocnumber">1</span> <span class="toctext">History</span></a>
<ul>
<li class="toclevel-2 tocsection-2"><a href="#Principles"><span class="tocnumber">1.1</span> <span class="toctext">Principles</span></a></li>
<li class="toclevel-2 tocsection-3"><a href="#Versions"><span class="tocnumber">1.2</span> <span class="toctext">Versions</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-4"><a href="#Practices"><span class="tocnumber">2</span> <span class="toctext">Practices</span></a>
<ul>
<li class="toclevel-2 tocsection-5"><a href="#Java_platform"><span class="tocnumber">2.1</span> <span class="toctext">Java platform</span></a>
<ul>
<li class="toclevel-3 tocsection-6"><a href="#Implementations"><span class="tocnumber">2.1.1</span> <span class="toctext">Implementations</span></a></li>
<li class="toclevel-3 tocsection-7"><a href="#Performance"><span class="tocnumber">2.1.2</span> <span class="toctext">Performance</span></a></li>
</ul>
</li>
<li class="toclevel-2 tocsection-8"><a href="#Automatic_memory_management"><span class="tocnumber">2.2</span> <span class="toctext">Automatic memory management</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-9"><a href="#Syntax"><span class="tocnumber">3</span> <span class="toctext">Syntax</span></a></li>
<li class="toclevel-1 tocsection-10"><a href="#Examples"><span class="tocnumber">4</span> <span class="toctext">Examples</span></a>
<ul>
<li class="toclevel-2 tocsection-11"><a href="#Hello_world"><span class="tocnumber">4.1</span> <span class="toctext">Hello world</span></a></li>
<li class="toclevel-2 tocsection-12"><a href="#A_more_comprehensive_example"><span class="tocnumber">4.2</span> <span class="toctext">A more comprehensive example</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-13"><a href="#Special_classes"><span class="tocnumber">5</span> <span class="toctext">Special classes</span></a>
<ul>
<li class="toclevel-2 tocsection-14"><a href="#Applet"><span class="tocnumber">5.1</span> <span class="toctext">Applet</span></a></li>
<li class="toclevel-2 tocsection-15"><a href="#Servlet"><span class="tocnumber">5.2</span> <span class="toctext">Servlet</span></a></li>
<li class="toclevel-2 tocsection-16"><a href="#JavaServer_Pages"><span class="tocnumber">5.3</span> <span class="toctext">JavaServer Pages</span></a></li>
<li class="toclevel-2 tocsection-17"><a href="#Swing_application"><span class="tocnumber">5.4</span> <span class="toctext">Swing application</span></a></li>
<li class="toclevel-2 tocsection-18"><a href="#Generics"><span class="tocnumber">5.5</span> <span class="toctext">Generics</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-19"><a href="#Criticism"><span class="tocnumber">6</span> <span class="toctext">Criticism</span></a></li>
<li class="toclevel-1 tocsection-20"><a href="#Use_by_external_companies"><span class="tocnumber">7</span> <span class="toctext">Use by external companies</span></a>
<ul>
<li class="toclevel-2 tocsection-21"><a href="#Google"><span class="tocnumber">7.1</span> <span class="toctext">Google</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-22"><a href="#Class_libraries"><span class="tocnumber">8</span> <span class="toctext">Class libraries</span></a></li>
<li class="toclevel-1 tocsection-23"><a href="#Documentation"><span class="tocnumber">9</span> <span class="toctext">Documentation</span></a></li>
<li class="toclevel-1 tocsection-24"><a href="#Editions"><span class="tocnumber">10</span> <span class="toctext">Editions</span></a></li>
<li class="toclevel-1 tocsection-25"><a href="#See_also"><span class="tocnumber">11</span> <span class="toctext">See also</span></a>
<ul>
<li class="toclevel-2 tocsection-26"><a href="#Comparison_of_Java_with_other_languages"><span class="tocnumber">11.1</span> <span class="toctext">Comparison of Java with other languages</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-27"><a href="#Notes"><span class="tocnumber">12</span> <span class="toctext">Notes</span></a></li>
<li class="toclevel-1 tocsection-28"><a href="#References"><span class="tocnumber">13</span> <span class="toctext">References</span></a></li>
<li class="toclevel-1 tocsection-29"><a href="#External_links"><span class="tocnumber">14</span> <span class="toctext">External links</span></a></li>
</ul>
</div>
<h2><span class="mw-headline" id="History">History</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=1" title="Edit section: History">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div class="rellink boilerplate seealso">See also: <a href="/wiki/Java_(software_platform)#History" title="Java (software platform)">Java (software platform)#History</a></div>
<div class="thumb tright">
<div class="thumbinner" style="width:172px;"><a href="/wiki/File:Wave.svg" class="image"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/170px-Wave.svg.png" width="170" height="306" class="thumbimage" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/255px-Wave.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/340px-Wave.svg.png 2x" /></a>
<div class="thumbcaption">
<div class="magnify"><a href="/wiki/File:Wave.svg" class="internal" title="Enlarge"><img src="//bits.wikimedia.org/static-1.22wmf21/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>
Duke, the Java mascot</div>
</div>
</div>
<p><a href="/wiki/James_Gosling" title="James Gosling">James Gosling</a>, Mike Sheridan, and <a href="/wiki/Patrick_Naughton" title="Patrick Naughton">Patrick Naughton</a> initiated the Java language project in June 1991.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span>[</span>12<span>]</span></a></sup> Java was originally designed for interactive television, but it was too advanced for the digital cable television industry at the time.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span>[</span>13<span>]</span></a></sup> The language was initially called <i><a href="/wiki/Oak_(programming_language)" title="Oak (programming language)">Oak</a></i> after an <a href="/wiki/Oak" title="Oak">oak</a> tree that stood outside Gosling's office; it went by the name <i>Green</i> later, and was later renamed <i>Java</i>, from <a href="/wiki/Java_coffee" title="Java coffee">Java coffee</a>,<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span>[</span>14<span>]</span></a></sup> said to be consumed in large quantities by the language's creators.<sup class="Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (April 2013)">citation needed</span></a></i>]</sup> Gosling aimed to implement a <a href="/wiki/Virtual_machine" title="Virtual machine">virtual machine</a> and a language that had a familiar <a href="/wiki/C_(programming_language)" title="C (programming language)">C</a>/<a href="/wiki/C%2B%2B" title="C++">C++</a> style of notation.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span>[</span>15<span>]</span></a></sup></p>
<p><a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> released the first public implementation as Java 1.0 in 1995.<sup id="cite_ref-oraclejavahistory_1-1" class="reference"><a href="#cite_note-oraclejavahistory-1"><span>[</span>1<span>]</span></a></sup> It promised "<a href="/wiki/Write_once,_run_anywhere" title="Write once, run anywhere">Write Once, Run Anywhere</a>" (WORA), providing no-cost run-times on popular <a href="/wiki/Computing_platform" title="Computing platform">platforms</a>. Fairly secure and featuring configurable security, it allowed network- and file-access restrictions. Major web browsers soon incorporated the ability to run <i><a href="/wiki/Java_applet" title="Java applet">Java applets</a></i> within web pages, and Java quickly became popular. With the advent of <i>Java 2</i> (released initially as J2SE 1.2 in December 1998 – 1999), new versions had multiple configurations built for different types of platforms. For example, <i>J2EE</i> targeted enterprise applications and the greatly stripped-down version <i>J2ME</i> for mobile applications (Mobile Java). <i>J2SE</i> designated the Standard Edition. In 2006, for marketing purposes, Sun renamed new <i>J2</i> versions as <i><a href="/wiki/Java_Platform,_Enterprise_Edition" title="Java Platform, Enterprise Edition">Java EE</a></i>, <i><a href="/wiki/Java_Platform,_Micro_Edition" title="Java Platform, Micro Edition">Java ME</a></i>, and <i><a href="/wiki/Java_Platform,_Standard_Edition" title="Java Platform, Standard Edition">Java SE</a></i>, respectively.</p>
<p>In 1997, Sun Microsystems approached the <a href="/wiki/ISO/IEC_JTC1" title="ISO/IEC JTC1">ISO/IEC JTC1</a> standards body and later the <a href="/wiki/Ecma_International" title="Ecma International">Ecma International</a> to formalize Java, but it soon withdrew from the process.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span>[</span>16<span>]</span></a></sup> Java remains a <i><a href="/wiki/De_facto" title="De facto">de facto</a></i> standard, controlled through the <a href="/wiki/Java_Community_Process" title="Java Community Process">Java Community Process</a>.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span>[</span>17<span>]</span></a></sup> At one time, Sun made most of its Java implementations available without charge, despite their <a href="/wiki/Proprietary_software" title="Proprietary software">proprietary software</a> status. Sun generated revenue from Java through the selling of licenses for specialized products such as the Java Enterprise System. Sun distinguishes between its <a href="/wiki/Software_development_kit" title="Software development kit">Software Development Kit (SDK)</a> and <a href="/wiki/HotSpot" title="HotSpot">Runtime Environment (JRE)</a> (a subset of the SDK); the primary distinction involves the <a href="/wiki/Java_virtual_machine" title="Java virtual machine">JRE's</a> lack of the compiler, utility programs, and header files.</p>
<p>On November 13, 2006, Sun released much of Java as <a href="/wiki/Free_and_open_source_software" title="Free and open source software" class="mw-redirect">free and open source software</a>, (FOSS), under the terms of the <a href="/wiki/GNU_General_Public_License" title="GNU General Public License">GNU General Public License</a> (GPL). On May 8, 2007, Sun finished the process, making all of Java's core code available under <a href="/wiki/Free_software" title="Free software">free software</a>/open-source distribution terms, aside from a small portion of code to which Sun did not hold the copyright.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span>[</span>18<span>]</span></a></sup></p>
<p>Sun's vice-president Rich Green said that Sun's ideal role with regards to Java was as an "evangelist."<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span>[</span>19<span>]</span></a></sup> Following <a href="/wiki/Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a>'s acquisition of Sun Microsystems in 2009–2010, Oracle has described itself as the "steward of Java technology with a relentless commitment to fostering a community of participation and transparency".<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span>[</span>20<span>]</span></a></sup> This did not hold Oracle, however, from filing a lawsuit against Google shortly after that for using Java inside the Android SDK (see Google section below). Java software runs on everything from <a href="/wiki/Laptop" title="Laptop">laptops</a> to <a href="/wiki/Data_center" title="Data center">data centers</a>, <a href="/wiki/Video_game_console" title="Video game console">game consoles</a> to scientific <a href="/wiki/Supercomputer" title="Supercomputer">supercomputers</a>. There are 930 million <a href="/wiki/Java_(software_platform)" title="Java (software platform)">Java Runtime Environment</a> downloads each year and 3 billion <a href="/wiki/Mobile_phone" title="Mobile phone">mobile phones</a> run Java.<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span>[</span>21<span>]</span></a></sup> On April 2, 2010, James Gosling resigned from Oracle.<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span>[</span>22<span>]</span></a></sup></p>
<h3><span class="mw-headline" id="Principles">Principles</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=2" title="Edit section: Principles">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<div class="thumb tright">
<div class="thumbinner" style="width:222px;"><a href="/wiki/File:James_Gosling_2008.jpg" class="image"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/1/14/James_Gosling_2008.jpg/220px-James_Gosling_2008.jpg" width="220" height="221" class="thumbimage" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/14/James_Gosling_2008.jpg/330px-James_Gosling_2008.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/14/James_Gosling_2008.jpg/440px-James_Gosling_2008.jpg 2x" /></a>
<div class="thumbcaption">
<div class="magnify"><a href="/wiki/File:James_Gosling_2008.jpg" class="internal" title="Enlarge"><img src="//bits.wikimedia.org/static-1.22wmf21/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>
<a href="/wiki/James_Gosling" title="James Gosling">James Gosling</a>, the creator of Java</div>
</div>
</div>
<p>There were five primary goals in the creation of the Java language:<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span>[</span>23<span>]</span></a></sup></p>
<ol>
<li>It should be "simple, object-oriented and familiar"</li>
<li>It should be "robust and secure"</li>
<li>It should be "architecture-neutral and portable"</li>
<li>It should execute with "high performance"</li>
<li>It should be "interpreted, threaded, and dynamic"</li>
</ol>
<h3><span class="mw-headline" id="Versions">Versions</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=3" title="Edit section: Versions">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<div class="rellink relarticle mainarticle">Main article: <a href="/wiki/Java_version_history" title="Java version history">Java version history</a></div>
<p>Major release versions of Java, along with their release dates:</p>
<ul>
<li>JDK 1.0 (January 21, 1996)</li>
<li>JDK 1.1 (February 19, 1997)</li>
<li>J2SE 1.2 (December 8, 1998)</li>
<li>J2SE 1.3 (May 8, 2000)</li>
<li>J2SE 1.4 (February 6, 2002)</li>
<li>J2SE 5.0 (September 30, 2004)</li>
<li>Java SE 6 (December 11, 2006)</li>
<li>Java SE 7 (July 28, 2011)</li>
</ul>
<h2><span class="mw-headline" id="Practices">Practices</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=4" title="Edit section: Practices">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h3><span class="mw-headline" id="Java_platform">Java platform</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=5" title="Edit section: Java platform">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<div class="rellink relarticle mainarticle">Main articles: <a href="/wiki/Java_(software_platform)" title="Java (software platform)">Java (software platform)</a> and <a href="/wiki/Java_virtual_machine" title="Java virtual machine">Java virtual machine</a></div>
<p>One characteristic of Java is portability, which means that computer programs written in the Java language must run similarly on any hardware/operating-system platform. This is achieved by compiling the Java language code to an intermediate representation called <a href="/wiki/Java_bytecode" title="Java bytecode">Java bytecode</a>, instead of directly to platform-specific <a href="/wiki/Machine_code" title="Machine code">machine code</a>. Java bytecode instructions are analogous to machine code, but they are intended to be <a href="/wiki/Interpreter_(computing)" title="Interpreter (computing)">interpreted</a> by a <a href="/wiki/Virtual_machine" title="Virtual machine">virtual machine</a> (VM) written specifically for the host hardware. <a href="/wiki/End-user" title="End-user" class="mw-redirect">End-users</a> commonly use a <a href="/wiki/Java_virtual_machine" title="Java virtual machine">Java Runtime Environment</a> (JRE) installed on their own machine for standalone Java applications, or in a Web browser for Java <a href="/wiki/Applet" title="Applet">applets</a>.</p>
<p>Standardized libraries provide a generic way to access host-specific features such as graphics, <a href="/wiki/Thread_(computer_science)" title="Thread (computer science)" class="mw-redirect">threading</a>, and <a href="/wiki/Computer_network" title="Computer network">networking</a>.</p>
<p>A major benefit of using bytecode is porting. However, the overhead of interpretation means that interpreted programs almost always run more slowly than programs compiled to native executables would. Just-in-Time (JIT) compilers were introduced from an early stage that compile bytecodes to machine code during runtime.</p>
<h4><span class="mw-headline" id="Implementations">Implementations</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=6" title="Edit section: Implementations">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
<div class="rellink boilerplate seealso">See also: <a href="/wiki/Free_Java_implementations" title="Free Java implementations">Free Java implementations</a></div>
<p><a href="/wiki/Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a> is the current owner of the official implementation of the Java SE platform, following their acquisition of <a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> on January 27, 2010. This implementation is based on the original implementation of Java by Sun. The Oracle implementation is available for <a href="/wiki/Mac_OS_X" title="Mac OS X" class="mw-redirect">Mac OS X</a>, <a href="/wiki/Windows" title="Windows" class="mw-redirect">Windows</a> and <a href="/wiki/Solaris_(operating_system)" title="Solaris (operating system)">Solaris</a>. Because Java lacks any formal standardization recognized by Ecma International, ISO/IEC, ANSI, or other third-party standards organization, the Oracle implementation is the <a href="/wiki/De_facto_standard" title="De facto standard">de facto standard</a>.</p>
<p>The Oracle implementation is packaged into two different distributions: The Java Runtime Environment (JRE) which contains the parts of the Java SE platform required to run Java programs and is intended for end-users, and the <a href="/wiki/Java_Development_Kit" title="Java Development Kit">Java Development Kit</a> (JDK), which is intended for software developers and includes development tools such as the <a href="/wiki/Java_compiler" title="Java compiler">Java compiler</a>, <a href="/wiki/Javadoc" title="Javadoc">Javadoc</a>, <a href="/wiki/JAR_(file_format)" title="JAR (file format)">Jar</a>, and a <a href="/wiki/Debugger" title="Debugger">debugger</a>.</p>
<p><a href="/wiki/OpenJDK" title="OpenJDK">OpenJDK</a> is another notable Java SE implementation that is licensed under the <a href="/wiki/GPL" title="GPL" class="mw-redirect">GPL</a>. The implementation started when Sun began releasing the Java source code under the <a href="/wiki/GPL" title="GPL" class="mw-redirect">GPL</a>. As of Java SE 7, <a href="/wiki/OpenJDK" title="OpenJDK">OpenJDK</a> is the official Java reference implementation.</p>
<p>The goal of Java is to make all implementations of Java compatible. Historically, Sun's trademark license for usage of the Java brand insists that all implementations be "compatible". This resulted in a legal dispute with <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a> after Sun claimed that the Microsoft implementation did not support <a href="/wiki/Java_remote_method_invocation" title="Java remote method invocation">RMI</a> or <a href="/wiki/Java_Native_Interface" title="Java Native Interface">JNI</a> and had added platform-specific features of their own. Sun sued in 1997, and in 2001 won a settlement of US$20 million, as well as a court order enforcing the terms of the license from Sun.<sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span>[</span>24<span>]</span></a></sup> As a result, Microsoft no longer ships <a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Windows</a> with Java.</p>
<p>Platform-independent Java is essential to <a href="/wiki/Java_Platform,_Enterprise_Edition" title="Java Platform, Enterprise Edition">Java EE</a>, and an even more rigorous validation is required to certify an implementation. This environment enables portable server-side applications.</p>
<h4><span class="mw-headline" id="Performance">Performance</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=7" title="Edit section: Performance">edit</a><span class="mw-editsection-bracket">]</span></span></h4>
<div class="rellink relarticle mainarticle">Main article: <a href="/wiki/Java_performance" title="Java performance">Java performance</a></div>
<p>Programs written in Java have a reputation for being slower and requiring more memory than those written in <a href="/wiki/C%2B%2B_(programming_language)" title="C++ (programming language)" class="mw-redirect">C++</a>.<sup id="cite_ref-25" class="reference"><a href="#cite_note-25"><span>[</span>25<span>]</span></a></sup><sup id="cite_ref-26" class="reference"><a href="#cite_note-26"><span>[</span>26<span>]</span></a></sup> However, Java programs' execution speed improved significantly with the introduction of <a href="/wiki/Just-in-time_compilation" title="Just-in-time compilation">Just-in-time compilation</a> in 1997/1998 for <a href="/wiki/Java_version_history" title="Java version history">Java 1.1</a>,<sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span>[</span>27<span>]</span></a></sup> the addition of language features supporting better code analysis (such as inner classes, the StringBuilder class, optional assertions, etc.), and optimizations in the Java virtual machine itself, such as <a href="/wiki/HotSpot" title="HotSpot">HotSpot</a> becoming the default for Sun's JVM in 2000.</p>
<p>Some platforms offer direct hardware support for Java; there are microcontrollers that can run Java in hardware instead of a software Java virtual machine, and <a href="/wiki/ARM_architecture" title="ARM architecture">ARM</a> based processors can have hardware support for executing Java bytecode through their <a href="/wiki/Jazelle" title="Jazelle">Jazelle</a> option.</p>
<h3><span class="mw-headline" id="Automatic_memory_management">Automatic memory management</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=8" title="Edit section: Automatic memory management">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>Java uses an <a href="/wiki/Garbage_collection_(computer_science)" title="Garbage collection (computer science)">automatic garbage collector</a> to manage memory in the <a href="/wiki/Object_lifetime" title="Object lifetime">object lifecycle</a>. The programmer determines when objects are created, and the Java runtime is responsible for recovering the memory once objects are no longer in use. Once no references to an object remain, the <a href="/wiki/Unreachable_memory" title="Unreachable memory">unreachable memory</a> becomes eligible to be freed automatically by the garbage collector. Something similar to a <a href="/wiki/Memory_leak" title="Memory leak">memory leak</a> may still occur if a programmer's code holds a reference to an object that is no longer needed, typically when objects that are no longer needed are stored in containers that are still in use. If methods for a nonexistent object are called, a "null pointer exception" is thrown.<sup id="cite_ref-28" class="reference"><a href="#cite_note-28"><span>[</span>28<span>]</span></a></sup><sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span>[</span>29<span>]</span></a></sup></p>
<p>One of the ideas behind Java's automatic memory management model is that programmers can be spared the burden of having to perform manual memory management. In some languages, memory for the creation of objects is implicitly allocated on the <a href="/wiki/Stack_(data_structure)" title="Stack (data structure)" class="mw-redirect">stack</a>, or explicitly allocated and deallocated from the <a href="/wiki/Dynamic_memory_allocation" title="Dynamic memory allocation" class="mw-redirect">heap</a>. In the latter case the responsibility of managing memory resides with the programmer. If the program does not deallocate an object, a <a href="/wiki/Memory_leak" title="Memory leak">memory leak</a> occurs. If the program attempts to access or deallocate memory that has already been deallocated, the result is undefined and difficult to predict, and the program is likely to become unstable and/or crash. This can be partially remedied by the use of <a href="/wiki/Smart_pointer" title="Smart pointer">smart pointers</a>, but these add overhead and complexity. Note that garbage collection does not prevent "logical" memory leaks, i.e. those where the memory is still referenced but never used.</p>
<p>Garbage collection may happen at any time. Ideally, it will occur when a program is idle. It is guaranteed to be triggered if there is insufficient free memory on the heap to allocate a new object; this can cause a program to stall momentarily. Explicit memory management is not possible in Java.</p>
<p>Java does not support C/C++ style <a href="/wiki/Pointer_(computer_programming)" title="Pointer (computer programming)">pointer arithmetic</a>, where object addresses and unsigned integers (usually long integers) can be used interchangeably. This allows the garbage collector to relocate referenced objects and ensures type safety and security.</p>
<p>As in <a href="/wiki/C%2B%2B" title="C++">C++</a> and some other object-oriented languages, variables of Java's <a href="/wiki/Primitive_data_type" title="Primitive data type">primitive data types</a> are not objects. Values of primitive types are either stored directly in fields (for objects) or on the <a href="/wiki/Stack-based_memory_allocation" title="Stack-based memory allocation">stack</a> (for methods) rather than on the heap, as is commonly true for objects (but see <a href="/wiki/Escape_analysis" title="Escape analysis">escape analysis</a>). This was a conscious decision by Java's designers for performance reasons. Because of this, Java was not considered to be a pure object-oriented programming language. However, as of Java 5.0, <a href="/wiki/Autoboxing" title="Autoboxing" class="mw-redirect">autoboxing</a> enables programmers to proceed as if primitive types were instances of their wrapper class.</p>
<p>Java contains multiple types of garbage collectors. By default,<sup class="Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (June 2013)">citation needed</span></a></i>]</sup> HotSpot uses the <a href="/wiki/Concurrent_mark_sweep_collector" title="Concurrent mark sweep collector">concurrent mark sweep collector</a>, also known as the CMS garbage collector or CMS. However, there are also several other garbage collectors that can be used to manage the heap. For 90% of applications in Java, the CMS garbage collector is sufficient.<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span>[</span>30<span>]</span></a></sup> Oracle aims to replace CMS with the <a href="/w/index.php?title=Garbage-first_collector&action=edit&redlink=1" class="new" title="Garbage-first collector (page does not exist)">Garbage-first collector</a> (G1).</p>
<h2><span class="mw-headline" id="Syntax">Syntax</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=9" title="Edit section: Syntax">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div class="rellink relarticle mainarticle">Main article: <a href="/wiki/Java_syntax" title="Java syntax">Java syntax</a></div>
<p>The syntax of Java is largely derived from <a href="/wiki/C%2B%2B" title="C++">C++</a>. Unlike C++, which combines the syntax for structured, generic, and object-oriented programming, Java was built almost exclusively as an object-oriented language. All code is written inside a class, and everything is an object, with the exception of the primitive data types (e.g. integers, floating-point numbers, boolean values, and characters), which are not classes for performance reasons.</p>
<p>Unlike C++, Java does not support <a href="/wiki/Operator_(programming)" title="Operator (programming)" class="mw-redirect">operator</a> <a href="/wiki/Operator_overloading" title="Operator overloading">overloading</a> or <a href="/wiki/Multiple_inheritance" title="Multiple inheritance">multiple inheritance</a> for <i>classes</i>. This simplifies the language and aids in preventing potential errors and <a href="/wiki/Anti-pattern" title="Anti-pattern">anti-pattern</a> design.</p>
<p>Java uses similar commenting methods to C++. There are three different styles of comments: a single line style marked with two slashes (<code>//</code>), a multiple line style opened with <code>/*</code> and closed with <code>*/</code>, and the <a href="/wiki/Javadoc" title="Javadoc">Javadoc</a> commenting style opened with <code>/**</code> and closed with <code>*/</code>. The Javadoc style of commenting allows the user to run the Javadoc executable to compile documentation for the program.</p>
<p><b>Example:</b></p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr">
<div class="java source-java">
<pre class="de1">
<span class="co1">// This is an example of a single line comment using two slashes</span>
<span class="coMULTI">/* This is an example of a multiple line comment using the slash and asterisk.
This type of comment can be used to hold a lot of information or deactivate
code, but it is very important to remember to close the comment. */</span>
<span class="co3">/**
* This is an example of a Javadoc comment; Javadoc can compile documentation
* from this text.
*/</span>
<span class="co3">/** Finally, an example of a method written in Java, wrapped in a class. */</span>
<span class="kw1">package</span> <span class="co2">fibsandlies</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.util.HashMap</span><span class="sy0">;</span>
<span class="kw1">public</span> <span class="kw1">class</span> FibCalculator <span class="kw1">extends</span> Fibonacci <span class="kw1">implements</span> Calculator <span class="br0">{</span>
<span class="kw1">private</span> <span class="kw1">static</span> HashMap<span class="sy0"><</span><span class="kw3">Integer</span>, Integer<span class="sy0">></span> memoized <span class="sy0">=</span> <span class="kw1">new</span> HashMap<span class="sy0"><</span><span class="kw3">Integer</span>, Integer<span class="sy0">></span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">static</span> <span class="br0">{</span>
memoized.<span class="me1">put</span><span class="br0">(</span><span class="nu0">1</span>, <span class="nu0">1</span><span class="br0">)</span><span class="sy0">;</span>
memoized.<span class="me1">put</span><span class="br0">(</span><span class="nu0">2</span>, <span class="nu0">1</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span>
<span class="co3">/** Given a non-negative number FIBINDEX, returns
* the Nth Fibonacci number, where N equals FIBINDEX.
* @param fibIndex The index of the Fibonacci number
* @return The Fibonacci number itself
*/</span>
@Override
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">int</span> fibonacci<span class="br0">(</span><span class="kw4">int</span> fibIndex<span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span>memoized.<span class="me1">containsKey</span><span class="br0">(</span>fibIndex<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">return</span> memoized.<span class="me1">get</span><span class="br0">(</span>fibIndex<span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span>
<span class="kw4">int</span> answer <span class="sy0">=</span> fibonacci<span class="br0">(</span>fibIndex <span class="sy0">-</span> <span class="nu0">1</span><span class="br0">)</span> <span class="sy0">+</span> fibonacci<span class="br0">(</span>fibIndex <span class="sy0">-</span> <span class="nu0">2</span><span class="br0">)</span><span class="sy0">;</span>
memoized.<span class="me1">put</span><span class="br0">(</span>fibIndex, answer<span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">return</span> answer<span class="sy0">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="br0">}</span>
</pre></div>
</div>
<h2><span class="mw-headline" id="Examples">Examples</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=10" title="Edit section: Examples">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<table class="metadata plainlinks ambox ambox-content" style="" role="presentation">
<tr>
<td class="mbox-image">
<div style="width: 52px;"><img alt="" src="//upload.wikimedia.org/wikipedia/en/f/f4/Ambox_content.png" width="40" height="40" /></div>
</td>
<td class="mbox-text" style=""><span class="mbox-text-span">This article <b>contains <a href="/wiki/Wikipedia:What_Wikipedia_is_not#NOTHOWTO" title="Wikipedia:What Wikipedia is not">instructions, advice, or how-to content</a></b>. <span class="hide-when-compact">The purpose of Wikipedia is to present facts, not to train. Please help <a class="external text" href="//en.wikipedia.org/w/index.php?title=Java_(programming_language)&action=edit">improve this article</a> either by rewriting the how-to content or by <a href="//meta.wikimedia.org/wiki/Help:Transwiki" class="extiw" title="m:Help:Transwiki">moving</a> it to <a href="//en.wikiversity.org/wiki/" class="extiw" title="v:">Wikiversity</a>, <a href="//en.wikibooks.org/wiki/" class="extiw" title="b:">Wikibooks</a> or <a href="//en.wikivoyage.org/wiki/" class="extiw" title="voy:">Wikivoyage</a></span> <small><i>(January 2012)</i></small> </span></td>
</tr>
</table>
<table class="metadata plainlinks ambox ambox-style ambox-external_links" style="" role="presentation">
<tr>
<td class="mbox-image">
<div style="width: 52px;"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/40px-Edit-clear.svg.png" width="40" height="40" srcset="//upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/60px-Edit-clear.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/80px-Edit-clear.svg.png 2x" /></div>
</td>
<td class="mbox-text" style=""><span class="mbox-text-span">This article's <b>use of <a href="/wiki/Wikipedia:External_links" title="Wikipedia:External links">external links</a> may not follow Wikipedia's policies or guidelines</b>. <span class="hide-when-compact">Please <a class="external text" href="//en.wikipedia.org/w/index.php?title=Java_(programming_language)&action=edit">improve this article</a> by removing <a href="/wiki/Wikipedia:What_Wikipedia_is_not#Wikipedia_is_not_a_mirror_or_a_repository_of_links.2C_images.2C_or_media_files" title="Wikipedia:What Wikipedia is not">excessive</a> or <a href="/wiki/Wikipedia:External_links" title="Wikipedia:External links">inappropriate</a> external links, and converting useful links where appropriate into <a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources">footnote references</a>.</span> <small><i>(March 2013)</i></small> </span></td>
</tr>
</table>
<h3><span class="mw-headline" id="Hello_world">Hello world</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=11" title="Edit section: Hello world">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<p>The traditional <a href="/wiki/Hello_world_program" title="Hello world program">Hello world program</a> can be written in Java as:<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span>[</span>31<span>]</span></a></sup></p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr">
<div class="java source-java">
<pre class="de1">
<span class="kw1">class</span> HelloWorldApp <span class="br0">{</span>
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">(</span><span class="kw3">String</span><span class="br0">[</span><span class="br0">]</span> args<span class="br0">)</span> <span class="br0">{</span>
<span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span><span class="st0">"Hello World!"</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// Display the string.</span>
<span class="br0">}</span>
<span class="br0">}</span>
</pre></div>
</div>
<p>To compare this to other programming languages see the list of <a href="/wiki/Hello_world_program_examples" title="Hello world program examples" class="mw-redirect">hello world program examples</a>.</p>
<p>Source files must be named after the public class they contain, appending the suffix <code>.java</code>, for example, <code>HelloWorldApp.java</code>. It must first be compiled into bytecode, using a <a href="/wiki/Java_compiler" title="Java compiler">Java compiler</a>, producing a file named <code>HelloWorldApp.class</code>. Only then can it be executed, or 'launched'. The Java source file may only contain one public class, but it can contain multiple classes with other than public access and any number of public <a href="/wiki/Inner_class" title="Inner class">inner classes</a>.</p>
<p>A <code><b>class</b></code> that is not declared <code><b>public</b></code> may be stored in any .java file. The compiler will generate a class file for each class defined in the source file. The name of the class file is the name of the class, with <i>.class</i> appended. For class file generation, <a href="/wiki/Anonymous_class" title="Anonymous class" class="mw-redirect">anonymous classes</a> are treated as if their name were the concatenation of the name of their enclosing class, a <i>$</i>, and an integer.</p>
<p>The <a href="/wiki/List_of_Java_keywords" title="List of Java keywords">keyword</a> <code><b>public</b></code> denotes that a method can be called from code in other classes, or that a class may be used by classes outside the class hierarchy. The class hierarchy is related to the name of the directory in which the .java file is located.</p>
<p>The keyword <code><b>static</b></code> in front of a method indicates a <a href="/wiki/Method_(computer_science)#Static_methods" title="Method (computer science)" class="mw-redirect">static method</a>, which is associated only with the class and not with any specific instance of that class. Only static methods can be invoked without a reference to an object. Static methods cannot access any class members that are not also static.</p>
<p>The keyword <code><b>void</b></code> indicates that the main method does not return any value to the caller. If a Java program is to exit with an error code, it must call System.exit() explicitly.</p>
<p>The method name "<code>main</code>" is not a keyword in the Java language. It is simply the name of the method the Java launcher calls to pass control to the program. Java classes that run in managed environments such as applets and <a href="/wiki/Enterprise_JavaBean" title="Enterprise JavaBean" class="mw-redirect">Enterprise JavaBean</a> do not use or need a <code>main()</code> method. A Java program may contain multiple classes that have <code>main</code> methods, which means that the VM needs to be explicitly told which class to launch from.</p>
<p>The main method must accept an <a href="/wiki/Array_data_type" title="Array data type">array</a> of <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/lang/String.html">String</a></code></b> objects. By convention, it is referenced as <code><b>args</b></code> although any other legal identifier name can be used. Since Java 5, the main method can also use <a href="/wiki/Variadic_function" title="Variadic function">variable arguments</a>, in the form of <code>public static void main(String... args)</code>, allowing the main method to be invoked with an arbitrary number of <code>String</code> arguments. The effect of this alternate declaration is semantically identical (the <code>args</code> parameter is still an array of <code>String</code> objects), but it allows an alternative syntax for creating and passing the array.</p>
<p>The Java launcher launches Java by loading a given class (specified on the command line or as an attribute in a <a href="/wiki/JAR_(file_format)" title="JAR (file format)">JAR</a>) and starting its <code>public static void main(String[])</code> method. Stand-alone programs must declare this method explicitly. The <code>String[] args</code> parameter is an <a href="/wiki/Array_data_type" title="Array data type">array</a> of <code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/lang/String.html">String</a></code> objects containing any arguments passed to the class. The parameters to <code>main</code> are often passed by means of a <a href="/wiki/Command-line_interface" title="Command-line interface">command line</a>.</p>
<p>Printing is part of a Java standard library: The <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/lang/System.html">System</a></code></b> class defines a public static field called <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/lang/System.html#out">out</a></code></b>. The <code>out</code> object is an instance of the <code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/io/PrintStream.html">PrintStream</a></code> class and provides many methods for printing data to <a href="/wiki/Standard_streams" title="Standard streams">standard out</a>, including <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/io/PrintStream.html#println(java.lang.String)">println(String)</a></code></b> which also appends a new line to the passed string.</p>
<p>The string "Hello, world!" is automatically converted to a String object by the compiler.</p>
<h3><span class="mw-headline" id="A_more_comprehensive_example">A more comprehensive example</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=12" title="Edit section: A more comprehensive example">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<table class="metadata plainlinks ambox ambox-content ambox-Unreferenced" style="" role="presentation">
<tr>
<td class="mbox-image">
<div style="width: 52px;"><a href="/wiki/File:Question_book-new.svg" class="image"><img alt="Question book-new.svg" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" width="50" height="39" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" /></a></div>
</td>
<td class="mbox-text" style=""><span class="mbox-text-span">This section <b>does not <a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources">cite</a> any <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">references or sources</a></b>. <span class="hide-when-compact">Please help improve this section by <a href="/wiki/Help:Introduction_to_referencing/1" title="Help:Introduction to referencing/1">adding citations to reliable sources</a>. Unsourced material may be challenged and <a href="/wiki/Wikipedia:Verifiability#Burden_of_evidence" title="Wikipedia:Verifiability">removed</a>.</span> <small><i>(May 2013)</i></small> </span></td>
</tr>
</table>
<table class="metadata plainlinks ambox ambox-content" style="" role="presentation">
<tr>
<td class="mbox-image">
<div style="width: 52px;"><img alt="" src="//upload.wikimedia.org/wikipedia/en/f/f4/Ambox_content.png" width="40" height="40" /></div>
</td>
<td class="mbox-text" style=""><span class="mbox-text-span">This article <b>contains <a href="/wiki/Wikipedia:What_Wikipedia_is_not#NOTHOWTO" title="Wikipedia:What Wikipedia is not">instructions, advice, or how-to content</a></b>. <span class="hide-when-compact">The purpose of Wikipedia is to present facts, not to train. Please help <a class="external text" href="//en.wikipedia.org/w/index.php?title=Java_(programming_language)&action=edit">improve this article</a> either by rewriting the how-to content or by <a href="//meta.wikimedia.org/wiki/Help:Transwiki" class="extiw" title="m:Help:Transwiki">moving</a> it to <a href="//en.wikiversity.org/wiki/" class="extiw" title="v:">Wikiversity</a>, <a href="//en.wikibooks.org/wiki/" class="extiw" title="b:">Wikibooks</a> or <a href="//en.wikivoyage.org/wiki/" class="extiw" title="voy:">Wikivoyage</a></span> <small><i>(May 2013)</i></small> </span></td>
</tr>
</table>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr">
<div class="java source-java">
<pre class="de1">
<span class="co1">// OddEven.java</span>
<span class="kw1">import</span> <span class="co2">javax.swing.JOptionPane</span><span class="sy0">;</span>
<span class="kw1">public</span> <span class="kw1">class</span> OddEven <span class="br0">{</span>
<span class="kw1">private</span> <span class="kw4">int</span> userInput<span class="sy0">;</span> <span class="co1">// a whole number("int" means integer)</span>
<span class="co3">/**
* This is the constructor method. It gets called when an object of the OddEven type
* is being created.
*/</span>
<span class="kw1">public</span> OddEven<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="coMULTI">/*
* In most Java programs constructors can initialize objects with default values, or create
* other objects that this object might use to perform its functions. In some Java programs, the
* constructor may simply be an empty function if nothing needs to be initialized prior to the
* functioning of the object. In this program's case, an empty constructor would suffice.
* A constructor must exist; however, if the user doesn't put one in then the compiler
* will create an empty one.
*/</span>
<span class="br0">}</span>
<span class="co3">/**
* This is the main method. It gets called when this class is run through a Java interpreter.
* @param args command line arguments (unused)
*/</span>
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">(</span><span class="kw1">final</span> <span class="kw3">String</span><span class="br0">[</span><span class="br0">]</span> args<span class="br0">)</span> <span class="br0">{</span>
<span class="coMULTI">/*
* This line of code creates a new instance of this class called "number" (also known as an
* Object) and initializes it by calling the constructor. The next line of code calls
* the "showDialog()" method, which brings up a prompt to ask you for a number.
*/</span>
OddEven number <span class="sy0">=</span> <span class="kw1">new</span> OddEven<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
number.<span class="me1">showDialog</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span>
<span class="kw1">public</span> <span class="kw4">void</span> showDialog<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="coMULTI">/*
* "try" makes sure nothing goes wrong. If something does,
* the interpreter skips to "catch" to see what it should do.
*/</span>
<span class="kw1">try</span> <span class="br0">{</span>
<span class="coMULTI">/*
* The code below brings up a JOptionPane, which is a dialog box
* The String returned by the "showInputDialog()" method is converted into
* an integer, making the program treat it as a number instead of a word.
* After that, this method calls a second method, calculate() that will
* display either "Even" or "Odd."
*/</span>
userInput <span class="sy0">=</span> <span class="kw3">Integer</span>.<span class="me1">parseInt</span><span class="br0">(</span><span class="kw3">JOptionPane</span>.<span class="me1">showInputDialog</span><span class="br0">(</span><span class="st0">"Please enter a number."</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span>
calculate<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span> <span class="kw1">catch</span> <span class="br0">(</span><span class="kw1">final</span> <span class="kw3">NumberFormatException</span> e<span class="br0">)</span> <span class="br0">{</span>
<span class="coMULTI">/*
* Getting in the catch block means that there was a problem with the format of
* the number. Probably some letters were typed in instead of a number.
*/</span>
<span class="kw3">System</span>.<span class="me1">err</span>.<span class="me1">println</span><span class="br0">(</span><span class="st0">"ERROR: Invalid input. Please type in a numerical value."</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="co3">/**
* When this gets called, it sends a message to the interpreter.
* The interpreter usually shows it on the command prompt (For Windows users)
* or the terminal (For *nix users).(Assuming it's open)
*/</span>
<span class="kw1">private</span> <span class="kw4">void</span> calculate<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">if</span> <span class="br0">(</span><span class="br0">(</span>userInput <span class="sy0">%</span> <span class="nu0">2</span><span class="br0">)</span> <span class="sy0">==</span> <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw3">JOptionPane</span>.<span class="me1">showMessageDialog</span><span class="br0">(</span><span class="kw2">null</span>, <span class="st0">"Even"</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span>
<span class="kw3">JOptionPane</span>.<span class="me1">showMessageDialog</span><span class="br0">(</span><span class="kw2">null</span>, <span class="st0">"Odd"</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="br0">}</span>
</pre></div>
</div>
<ul>
<li>The <b><a href="/wiki/List_of_Java_keywords#import" title="List of Java keywords">import</a></b> statement imports the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html">JOptionPane</a></code></b> class from the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/javax/swing/package-summary.html">javax.swing</a></code></b> <a href="/wiki/Java_package" title="Java package">package</a>.</li>
<li>The <code><b>OddEven</b></code> class declares a single <code><b><a href="//en.wikibooks.org/wiki/Java_Programming/Classes,_Objects_and_Types" class="extiw" title="b:Java Programming/Classes, Objects and Types">private</a></b></code> <a href="/wiki/Field_(computer_science)" title="Field (computer science)">field</a> of type <code><b>int</b></code> named <code><b>userInput</b></code>. Every instance of the <code>OddEven</code> class has its own copy of the <code>userInput</code> field. The private declaration means that no other class can access (read or write) the <code>userInput</code> field.</li>
<li><code><b>OddEven()</b></code> is a <code><b>public</b></code> <a href="/wiki/Constructor_(object-oriented_programming)" title="Constructor (object-oriented programming)">constructor</a>. Constructors have the same name as the enclosing class they are declared in, and unlike a method, have no <a href="/wiki/Return_type" title="Return type">return type</a>. A constructor is used to initialize an <a href="/wiki/Object_(computer_science)" title="Object (computer science)">object</a> that is a newly created instance of the class.</li>
<li>The <code><b>calculate()</b></code> method is declared without the <a href="/wiki/Static_(keyword)" title="Static (keyword)"><code>static</code> keyword</a>. This means that the method is invoked using a specific instance of the <code>OddEven</code> class. (The <a href="/wiki/Reference_(computer_science)" title="Reference (computer science)">reference</a> used to invoke the method is passed as an undeclared parameter of type <code>OddEven</code> named <code><b><a href="/wiki/This_(computer_science)" title="This (computer science)" class="mw-redirect">this</a></b></code>.) The method tests the expression <code>userInput % 2 == 0</code> using the <code><b><a href="/wiki/Java_keywords#if" title="Java keywords" class="mw-redirect">if</a></b></code> keyword to see if the remainder of dividing the <code>userInput</code> field belonging to the instance of the class by two is zero. If this expression is true, then it prints <b>Even</b>; if this expression is false it prints <b>Odd</b>. (The <code>calculate</code> method can be equivalently accessed as <code>this.calculate</code> and the <code>userInput</code> field can be equivalently accessed as <code>this.userInput</code>, which both explicitly use the undeclared <code>this</code> parameter.)</li>
<li><code><b>OddEven number = new OddEven();</b></code> declares a local object <a href="/wiki/Reference_(computer_science)" title="Reference (computer science)">reference</a> variable in the <code>main</code> method named <code>number</code>. This variable can hold a reference to an object of type <code>OddEven</code>. The declaration initializes <code>number</code> by first creating an instance of the <code>OddEven</code> class, using the <code><b><a href="/wiki/List_of_Java_keywords#new" title="List of Java keywords">new</a></b></code> keyword and the <code>OddEven()</code> constructor, and then assigning this instance to the variable.</li>
<li>The statement <code><b>number.showDialog();</b></code> calls the calculate method. The instance of <code>OddEven</code> object referenced by the <code>number</code> <a href="/wiki/Local_variable" title="Local variable">local variable</a> is used to invoke the method and passed as the undeclared <code>this</code> parameter to the <code>calculate</code> method.</li>
<li><code><b>userInput = Integer.parseInt(JOptionPane.showInputDialog("Please Enter A Number"));</b></code> is a statement that converts the type of <b>String</b> to the <a href="/wiki/Primitive_data_type" title="Primitive data type">primitive data type</a> <b>int</b> by using a utility function in the <a href="/wiki/Primitive_wrapper_class" title="Primitive wrapper class">primitive wrapper class</a> <b>Integer</b>.</li>
</ul>
<h2><span class="mw-headline" id="Special_classes">Special classes</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=13" title="Edit section: Special classes">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<table class="metadata plainlinks ambox ambox-content" style="" role="presentation">
<tr>
<td class="mbox-image">
<div style="width: 52px;"><img alt="" src="//upload.wikimedia.org/wikipedia/en/f/f4/Ambox_content.png" width="40" height="40" /></div>
</td>
<td class="mbox-text" style=""><span class="mbox-text-span">This article <b>contains <a href="/wiki/Wikipedia:What_Wikipedia_is_not#NOTHOWTO" title="Wikipedia:What Wikipedia is not">instructions, advice, or how-to content</a></b>. <span class="hide-when-compact">The purpose of Wikipedia is to present facts, not to train. Please help <a class="external text" href="//en.wikipedia.org/w/index.php?title=Java_(programming_language)&action=edit">improve this article</a> either by rewriting the how-to content or by <a href="//meta.wikimedia.org/wiki/Help:Transwiki" class="extiw" title="m:Help:Transwiki">moving</a> it to <a href="//en.wikiversity.org/wiki/" class="extiw" title="v:">Wikiversity</a>, <a href="//en.wikibooks.org/wiki/" class="extiw" title="b:">Wikibooks</a> or <a href="//en.wikivoyage.org/wiki/" class="extiw" title="voy:">Wikivoyage</a></span> <small><i>(January 2012)</i></small> </span></td>
</tr>
</table>
<h3><span class="mw-headline" id="Applet">Applet</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=14" title="Edit section: Applet">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<div class="rellink relarticle mainarticle">Main article: <a href="/wiki/Java_applet" title="Java applet">Java applet</a></div>
<p>Java applets are programs that are embedded in other applications, typically in a Web page displayed in a <a href="/wiki/Web_browser" title="Web browser">Web browser</a>.</p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr">
<div class="java source-java">
<pre class="de1">
<span class="co1">// Hello.java</span>
<span class="kw1">import</span> <span class="co2">javax.swing.JApplet</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.awt.Graphics</span><span class="sy0">;</span>
<span class="kw1">public</span> <span class="kw1">class</span> Hello <span class="kw1">extends</span> <span class="kw3">JApplet</span> <span class="br0">{</span>
<span class="kw1">public</span> <span class="kw4">void</span> paintComponent<span class="br0">(</span><span class="kw1">final</span> <span class="kw3">Graphics</span> g<span class="br0">)</span> <span class="br0">{</span>
g.<span class="me1">drawString</span><span class="br0">(</span><span class="st0">"Hello, world!"</span>, <span class="nu0">65</span>, <span class="nu0">95</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
</pre></div>
</div>
<p>The <code><b>import</b></code> statements direct the <a href="/wiki/Java_compiler" title="Java compiler">Java compiler</a> to include the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/javax/swing/JApplet.html">javax.swing.JApplet</a></code></b> and <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/awt/Graphics.html">java.awt.Graphics</a></code></b> classes in the compilation. The import statement allows these classes to be referenced in the <a href="/wiki/Source_code" title="Source code">source code</a> using the <i>simple class name</i> (i.e. <code>JApplet</code>) instead of the <i>fully qualified class name</i> (i.e. <code>javax.swing.JApplet</code>).</p>
<p>The <code>Hello</code> class <code><b>extends</b></code> (<a href="/wiki/Subclass_(computer_science)" title="Subclass (computer science)" class="mw-redirect">subclasses</a>) the <code><b>JApplet</b></code> (Java Applet) class; the <code>JApplet</code> class provides the framework for the host application to display and control the <a href="/wiki/Object_lifetime" title="Object lifetime">lifecycle</a> of the applet. The <code>JApplet</code> class is a JComponent (Java Graphical Component) which provides the applet with the capability to display a <a href="/wiki/Graphical_user_interface" title="Graphical user interface">graphical user interface</a> (GUI) and respond to user <a href="/wiki/Event-driven_programming" title="Event-driven programming">events</a>.</p>
<p>The <code>Hello</code> class <a href="/wiki/Method_overriding" title="Method overriding">overrides</a> the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/awt/Container.html#paint(java.awt.Graphics)">paintComponent(Graphics)</a></code></b> method (additionally indicated with the <a href="/wiki/Java_annotation" title="Java annotation">annotation</a>, supported as of JDK 1.5, <code>Override</code>) inherited from the <code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/awt/Container.html">Container</a></code> <a href="/wiki/Superclass_(computer_science)" title="Superclass (computer science)" class="mw-redirect">superclass</a> to provide the code to display the applet. The <code>paintComponent()</code> method is passed a <code><b>Graphics</b></code> object that contains the graphic context used to display the applet. The <code>paintComponent()</code> method calls the graphic context <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/awt/Graphics.html#drawString(java.lang.String,%20int,%20int)">drawString(String, int, int)</a></code></b> method to display the <b>"Hello, world!"</b> string at a <a href="/wiki/Pixel" title="Pixel">pixel</a> offset of (<code><b>65, 95</b></code>) from the upper-left corner in the applet's display.</p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr">
<div class="html4strict source-html4strict">
<pre class="de1">
<span class="sc0"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"</span>
<span class="sc0">"http://www.w3.org/TR/html4/strict.dtd"></span>
<span class="sc-1"><!-- Hello.html --></span>
<span class="sc2"><<span class="kw2">html</span>></span>
<span class="sc2"><<span class="kw2">head</span>></span>
<span class="sc2"><<span class="kw2">title</span>></span>Hello World Applet<span class="sc2"><<span class="sy0">/</span><span class="kw2">title</span>></span>
<span class="sc2"><<span class="sy0">/</span><span class="kw2">head</span>></span>
<span class="sc2"><<span class="kw2">body</span>></span>
<span class="sc2"><<span class="kw2">applet</span> <span class="kw3">code</span><span class="sy0">=</span><span class="st0">"Hello.class"</span> <span class="kw3">width</span><span class="sy0">=</span><span class="st0">"200"</span> <span class="kw3">height</span><span class="sy0">=</span><span class="st0">"200"</span>></span>
<span class="sc2"><<span class="sy0">/</span><span class="kw2">applet</span>></span>
<span class="sc2"><<span class="sy0">/</span><span class="kw2">body</span>></span>
<span class="sc2"><<span class="sy0">/</span><span class="kw2">html</span>></span>
</pre></div>
</div>
<p>An applet is placed in an <a href="/wiki/HTML" title="HTML">HTML</a> document using the <b><code><applet></code></b> <a href="/wiki/HTML_element" title="HTML element">HTML element</a>. The <code>applet</code> tag has three attributes set: <b><code>code="Hello"</code></b> specifies the name of the <code>JApplet</code> class and <b><code>width="200" height="200"</code></b> sets the pixel width and height of the applet. Applets may also be embedded in HTML using either the <code>object</code> or <code>embed</code> element,<sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span>[</span>32<span>]</span></a></sup> although support for these elements by Web browsers is inconsistent.<sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span>[</span>33<span>]</span></a></sup> However, the <code>applet</code> tag is deprecated, so the <code>object</code> tag is preferred where supported.</p>
<p>The host application, typically a Web browser, instantiates the <b><code>Hello</code></b> applet and creates an <code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/applet/AppletContext.html">AppletContext</a></code> for the applet. Once the applet has initialized itself, it is added to the AWT display hierarchy. The <code>paintComponent()</code> method is called by the AWT <a href="/wiki/Event_dispatching_thread" title="Event dispatching thread">event dispatching thread</a> whenever the display needs the applet to draw itself.</p>
<h3><span class="mw-headline" id="Servlet">Servlet</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=15" title="Edit section: Servlet">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<div class="rellink relarticle mainarticle">Main article: <a href="/wiki/Java_Servlet" title="Java Servlet">Java Servlet</a></div>
<p><a href="/wiki/Java_Servlet" title="Java Servlet">Java Servlet</a> technology provides Web developers with a simple, consistent mechanism for extending the functionality of a Web server and for accessing existing business systems. Servlets are <a href="/wiki/Server-side" title="Server-side">server-side</a> Java EE components that generate responses (typically <a href="/wiki/HTML" title="HTML">HTML</a> pages) to requests (typically <a href="/wiki/Hypertext_Transfer_Protocol" title="Hypertext Transfer Protocol">HTTP</a> requests) from <a href="/wiki/Client_(computing)" title="Client (computing)">clients</a>. A servlet can almost be thought of as an applet that runs on the server side—without a face.</p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr">
<div class="java source-java">
<pre class="de1">
<span class="co1">// Hello.java</span>
<span class="kw1">import</span> <span class="co2">java.io.*</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">javax.servlet.*</span><span class="sy0">;</span>
<span class="kw1">public</span> <span class="kw1">class</span> Hello <span class="kw1">extends</span> GenericServlet <span class="br0">{</span>
<span class="kw1">public</span> <span class="kw4">void</span> service<span class="br0">(</span><span class="kw1">final</span> ServletRequest request, <span class="kw1">final</span> ServletResponse response<span class="br0">)</span>
<span class="kw1">throws</span> ServletException, <span class="kw3">IOException</span> <span class="br0">{</span>
response.<span class="me1">setContentType</span><span class="br0">(</span><span class="st0">"text/html"</span><span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">final</span> <span class="kw3">PrintWriter</span> pw <span class="sy0">=</span> response.<span class="me1">getWriter</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">try</span> <span class="br0">{</span>
pw.<span class="me1">println</span><span class="br0">(</span><span class="st0">"Hello, world!"</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span> <span class="kw1">finally</span> <span class="br0">{</span>
pw.<span class="me1">close</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
<span class="br0">}</span>
</pre></div>
</div>
<p>The <b><code>import</code></b> statements direct the Java compiler to include all of the public classes and <a href="/wiki/Interface_(Java)" title="Interface (Java)">interfaces</a> from the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/io/package-summary.html">java.io</a></code></b> and <b><code><a rel="nofollow" class="external text" href="http://docs.oracle.com/javaee/7/api/javax/servlet/package-summary.html">javax.servlet</a></code></b> packages in the compilation.</p>
<p>The <code><b>Hello</b></code> class <code><b>extends</b></code> the <b><code><a rel="nofollow" class="external text" href="http://docs.oracle.com/javaee/7/api/javax/servlet/GenericServlet.html">GenericServlet</a></code></b> class; the <code>GenericServlet</code> class provides the interface for the <a href="/wiki/Server_(computing)" title="Server (computing)">server</a> to forward requests to the servlet and control the servlet's lifecycle.</p>
<p>The <code>Hello</code> class overrides the <b><code><a rel="nofollow" class="external text" href="http://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html#service(javax.servlet.ServletRequest,javax.servlet.ServletResponse)">service(ServletRequest, ServletResponse)</a></code></b> method defined by the <code><a rel="nofollow" class="external text" href="http://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html">Servlet</a></code> <a href="/wiki/Interface_(Java)" title="Interface (Java)">interface</a> to provide the code for the service request handler. The <code>service()</code> method is passed: a <b><code><a rel="nofollow" class="external text" href="http://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html">ServletRequest</a></code></b> object that contains the request from the client and a <b><code><a rel="nofollow" class="external text" href="http://docs.oracle.com/javaee/7/api/javax/servlet/ServletResponse.html">ServletResponse</a></code></b> object used to create the response returned to the client. The <code>service()</code> method declares that it <code><b>throws</b></code> the <a href="/wiki/Exception_handling" title="Exception handling">exceptions</a> <code><a rel="nofollow" class="external text" href="http://docs.oracle.com/javaee/7/api/javax/servlet/ServletException.html">ServletException</a></code> and <code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/io/IOException.html">IOException</a></code> if a problem prevents it from responding to the request.</p>
<p>The <b><code><a rel="nofollow" class="external text" href="http://docs.oracle.com/javaee/7/api/javax/servlet/ServletResponse.html#setContentType(java.lang.String)">setContentType(String)</a></code></b> method in the response object is called to set the <a href="/wiki/MIME" title="MIME">MIME</a> content type of the returned data to <b>"text/html"</b>. The <b><code><a rel="nofollow" class="external text" href="http://docs.oracle.com/javaee/7/api/javax/servlet/ServletResponse.html#getWriter()">getWriter()</a></code></b> method in the response returns a <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/io/PrintWriter.html">PrintWriter</a></code></b> object that is used to write the data that is sent to the client. The <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#println(java.lang.String)">println(String)</a></code></b> method is called to write the <b>"Hello, world!"</b> string to the response and then the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#close()">close()</a></code></b> method is called to close the print writer, which causes the data that has been written to the stream to be returned to the client.</p>
<h3><span class="mw-headline" id="JavaServer_Pages">JavaServer Pages</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=16" title="Edit section: JavaServer Pages">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<div class="rellink relarticle mainarticle">Main article: <a href="/wiki/JavaServer_Pages" title="JavaServer Pages">JavaServer Pages</a></div>
<p>JavaServer Pages (JSP) are <a href="/wiki/Server-side" title="Server-side">server-side</a> Java EE components that generate responses, typically <a href="/wiki/HTML" title="HTML">HTML</a> pages, to <a href="/wiki/Hypertext_Transfer_Protocol" title="Hypertext Transfer Protocol">HTTP</a> requests from <a href="/wiki/Client_(computing)" title="Client (computing)">clients</a>. JSPs embed Java code in an HTML page by using the special <a href="/wiki/Delimiter" title="Delimiter">delimiters</a> <code><%</code> and <code>%></code>. A JSP is compiled to a Java <i>servlet</i>, a Java application in its own right, the first time it is accessed. After that, the generated servlet creates the response.</p>
<h3><span class="mw-headline" id="Swing_application">Swing application</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=17" title="Edit section: Swing application">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<div class="rellink relarticle mainarticle">Main article: <a href="/wiki/Swing_(Java)" title="Swing (Java)">Swing (Java)</a></div>
<p><a href="/wiki/Swing_(Java)" title="Swing (Java)">Swing</a> is a graphical user interface <a href="/wiki/Library_(computing)" title="Library (computing)">library</a> for the Java SE platform. It is possible to specify a different look and feel through the <a href="/wiki/Pluggable_look_and_feel" title="Pluggable look and feel">pluggable look and feel</a> system of Swing. Clones of <a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Windows</a>, <a href="/wiki/GTK%2B" title="GTK+">GTK+</a> and <a href="/wiki/Motif_(software)" title="Motif (software)">Motif</a> are supplied by Sun. <a href="/wiki/Apple_Inc." title="Apple Inc.">Apple</a> also provides an <a href="/wiki/Aqua_(user_interface)" title="Aqua (user interface)">Aqua</a> look and feel for <a href="/wiki/Mac_OS_X" title="Mac OS X" class="mw-redirect">Mac OS X</a>. Where prior implementations of these looks and feels may have been considered lacking, Swing in Java SE 6 addresses this problem by using more native <a href="/wiki/GUI_widget" title="GUI widget">GUI widget</a> drawing routines of the underlying platforms.</p>
<p>This example Swing application creates a single window with "Hello, world!" inside:</p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr">
<div class="java source-java">
<pre class="de1">
<span class="co1">// Hello.java (Java SE 5)</span>
<span class="kw1">import</span> <span class="co2">javax.swing.*</span><span class="sy0">;</span>
<span class="kw1">public</span> <span class="kw1">class</span> Hello <span class="kw1">extends</span> <span class="kw3">JFrame</span> <span class="br0">{</span>
<span class="kw1">public</span> Hello<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">super</span><span class="br0">(</span><span class="st0">"hello"</span><span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">super</span>.<span class="me1">setDefaultCloseOperation</span><span class="br0">(</span><span class="kw3">WindowConstants</span>.<span class="me1">EXIT_ON_CLOSE</span><span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">super</span>.<span class="me1">add</span><span class="br0">(</span><span class="kw1">new</span> <span class="kw3">JLabel</span><span class="br0">(</span><span class="st0">"Hello, world!"</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">super</span>.<span class="me1">pack</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
<span class="kw1">super</span>.<span class="me1">setVisible</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span>
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">(</span><span class="kw1">final</span> <span class="kw3">String</span><span class="br0">[</span><span class="br0">]</span> args<span class="br0">)</span> <span class="br0">{</span>
<span class="kw1">new</span> Hello<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
<span class="br0">}</span>
<span class="br0">}</span>
</pre></div>
</div>
<p>The first <b><code>import</code></b> includes all of the public classes and interfaces from the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/javax/swing/package-summary.html">javax.swing</a></code></b> package.</p>
<p>The <code><b>Hello</b></code> class <code><b>extends</b></code> the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/javax/swing/JFrame.html">JFrame</a></code></b> class; the <code>JFrame</code> class implements a <a href="/wiki/Window_(computing)" title="Window (computing)">window</a> with a <a href="/wiki/Title_bar" title="Title bar">title bar</a> and a close <a href="/wiki/GUI_widget" title="GUI widget">control</a>.</p>
<p>The <code><b>Hello()</b></code> <a href="/wiki/Constructor_(object-oriented_programming)" title="Constructor (object-oriented programming)">constructor</a> initializes the frame by first calling the superclass constructor, passing the parameter <code>"hello"</code>, which is used as the window's title. It then calls the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation(int)">setDefaultCloseOperation(int)</a></code></b> method inherited from <code>JFrame</code> to set the default operation when the close control on the title bar is selected to <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/javax/swing/WindowConstants.html#EXIT_ON_CLOSE">WindowConstants.EXIT_ON_CLOSE</a></code></b> — this causes the <code>JFrame</code> to be disposed of when the frame is closed (as opposed to merely hidden), which allows the Java virtual machine to exit and the program to terminate. Next, a <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/javax/swing/JLabel.html">JLabel</a></code></b> is created for the string <b>"Hello, world!"</b> and the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/awt/Container.html#add(java.awt.Component)">add(Component)</a></code></b> method inherited from the <code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/awt/Container.html">Container</a></code> superclass is called to add the label to the frame. The <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/awt/Window.html#pack()">pack()</a></code></b> method inherited from the <code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/awt/Window.html">Window</a></code> superclass is called to size the window and lay out its contents.</p>
<p>The <code><b>main()</b></code> method is called by the Java virtual machine when the program starts. It <a href="/wiki/Object_(computer_science)" title="Object (computer science)">instantiates</a> a new <b><code>Hello</code></b> frame and causes it to be displayed by calling the <b><code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/awt/Component.html#setVisible(boolean)">setVisible(boolean)</a></code></b> method inherited from the <code><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/java/awt/Component.html">Component</a></code> superclass with the boolean parameter <code><b>true</b></code>. Once the frame is displayed, exiting the <code>main</code> method does not cause the program to terminate because the AWT <a href="/wiki/Event_dispatching_thread" title="Event dispatching thread">event dispatching thread</a> remains active until all of the Swing top-level windows have been disposed.</p>
<h3><span class="mw-headline" id="Generics">Generics</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=18" title="Edit section: Generics">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<div class="rellink relarticle mainarticle">Main article: <a href="/wiki/Generics_in_Java" title="Generics in Java">Generics in Java</a></div>
<p>In 2004, <a href="/wiki/Generic_programming" title="Generic programming">generics</a> were added to the Java language, as part of J2SE 5.0. Prior to the introduction of generics, each variable declaration had to be of a specific type. For container classes, for example, this is a problem because there is no easy way to create a container that accepts only specific types of objects. Either the container operates on all subtypes of a class or interface, usually <code>Object</code>, or a different container class has to be created for each contained class. Generics allow compile-time type checking without having to create a large number of container classes, each containing almost identical code. In addition to enabling more efficient code, certain runtime exceptions are converted to compile-time errors, a characteristic known as <a href="/wiki/Type_safety" title="Type safety">type safety</a>.</p>
<h2><span class="mw-headline" id="Criticism">Criticism</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=19" title="Edit section: Criticism">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div class="rellink relarticle mainarticle">Main article: <a href="/wiki/Criticism_of_Java" title="Criticism of Java">Criticism of Java</a></div>
<p>Criticisms directed at Java include the implementation of generics,<sup id="cite_ref-34" class="reference"><a href="#cite_note-34"><span>[</span>34<span>]</span></a></sup> speed,<sup id="cite_ref-35" class="reference"><a href="#cite_note-35"><span>[</span>35<span>]</span></a></sup><sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span>[</span>36<span>]</span></a></sup> the handling of unsigned numbers,<sup id="cite_ref-37" class="reference"><a href="#cite_note-37"><span>[</span>37<span>]</span></a></sup> the implementation of floating-point arithmetic,<sup id="cite_ref-38" class="reference"><a href="#cite_note-38"><span>[</span>38<span>]</span></a></sup> and a history of security vulnerabilities in the primary Java VM implementation <a href="/wiki/HotSpot" title="HotSpot">HotSpot</a>.<sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span>[</span>39<span>]</span></a></sup><sup id="cite_ref-40" class="reference"><a href="#cite_note-40"><span>[</span>40<span>]</span></a></sup></p>
<h2><span class="mw-headline" id="Use_by_external_companies">Use by external companies</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=20" title="Edit section: Use by external companies">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div class="thumb tright">
<div class="thumbinner" style="width:172px;"><a href="/wiki/File:Android_4.0.png" class="image"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Android_4.0.png/170px-Android_4.0.png" width="170" height="302" class="thumbimage" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Android_4.0.png/255px-Android_4.0.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Android_4.0.png/340px-Android_4.0.png 2x" /></a>
<div class="thumbcaption">
<div class="magnify"><a href="/wiki/File:Android_4.0.png" class="internal" title="Enlarge"><img src="//bits.wikimedia.org/static-1.22wmf21/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>
<a href="/wiki/Android_(operating_system)" title="Android (operating system)">Android</a> makes extensive use of Java-related technology</div>
</div>
</div>
<h3><span class="mw-headline" id="Google">Google</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=21" title="Edit section: Google">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<dl>
<dd><i>See also: <a href="/wiki/Oracle_v._Google" title="Oracle v. Google">Oracle v. Google</a></i></dd>
</dl>
<p><a href="/wiki/Google" title="Google">Google</a> and Android, Inc. have chosen to use Java as a key pillar in the creation of the <a href="/wiki/Android_(operating_system)" title="Android (operating system)">Android operating system</a>, an <a href="/wiki/Open-source" title="Open-source" class="mw-redirect">open-source</a> <a href="/wiki/Smartphone_operating_system" title="Smartphone operating system" class="mw-redirect">smartphone operating system</a>. Although the Android operating system, built on the <a href="/wiki/Linux_kernel" title="Linux kernel">Linux kernel</a>, was written largely in C, the <a href="/wiki/Android_SDK" title="Android SDK" class="mw-redirect">Android SDK</a> uses the Java language as the basis for Android applications. However, Android uses Java only for its syntax, but not its class library. Instead of instantiating classes from the standard Java Class Library, Android provides its own class library which apps are expected to use. Android apps are compiled through Java bytecode as an intermediate step into Dalvik Executables targeting Android's own <a href="/wiki/Dalvik_(software)" title="Dalvik (software)">Dalvik virtual machine</a>. Some of the classes in the Dalvik class library resembled their Java counterparts, which became a major point of contention between Sun/Oracle and Google/Android.</p>
<p>On May 7, 2012, a San Francisco jury found that if APIs could be copyrighted, then Google had infringed Oracle's copyrights by the use of Java in Android devices.<sup id="cite_ref-41" class="reference"><a href="#cite_note-41"><span>[</span>41<span>]</span></a></sup> Oracle's stance in <a href="/wiki/Oracle_v._Google" title="Oracle v. Google">this case</a> had raised questions about the legal status of the use of Java on Android. However, U.S. District Judge <a href="/wiki/William_Haskell_Alsup" title="William Haskell Alsup">William Haskell Alsup</a> ruled on May 31, 2012, that APIs cannot be copyrighted.<sup id="cite_ref-42" class="reference"><a href="#cite_note-42"><span>[</span>42<span>]</span></a></sup></p>
<h2><span class="mw-headline" id="Class_libraries">Class libraries</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=22" title="Edit section: Class libraries">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<table class="metadata plainlinks ambox ambox-content ambox-Unreferenced" style="" role="presentation">
<tr>
<td class="mbox-image">
<div style="width: 52px;"><a href="/wiki/File:Question_book-new.svg" class="image"><img alt="Question book-new.svg" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" width="50" height="39" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" /></a></div>
</td>
<td class="mbox-text" style=""><span class="mbox-text-span">This section <b>does not <a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources">cite</a> any <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">references or sources</a></b>. <span class="hide-when-compact">Please help improve this section by <a href="/wiki/Help:Introduction_to_referencing/1" title="Help:Introduction to referencing/1">adding citations to reliable sources</a>. Unsourced material may be challenged and <a href="/wiki/Wikipedia:Verifiability#Burden_of_evidence" title="Wikipedia:Verifiability">removed</a>.</span> <small><i>(May 2013)</i></small> </span></td>
</tr>
</table>
<ul>
<li>The <a href="/wiki/Java_Class_Library" title="Java Class Library">Java Class Library</a> are the compiled <a href="/wiki/Bytecode" title="Bytecode">bytecodes</a> of <a href="/wiki/Source_code" title="Source code">source code</a> developed by the JRE implementor to support application development in Java. Examples of these libraries are:
<ul>
<li>The core libraries, which include:
<ul>
<li><a href="/wiki/Java_collections_framework" title="Java collections framework">Collection libraries</a> that implement <a href="/wiki/Data_structure" title="Data structure">data structures</a> such as <a href="/wiki/List_(computing)" title="List (computing)" class="mw-redirect">lists</a>, <a href="/wiki/Associative_array" title="Associative array">dictionaries</a>, <a href="/wiki/Tree_structure" title="Tree structure">trees</a>, <a href="/wiki/Set_(computer_science)" title="Set (computer science)" class="mw-redirect">sets</a>, <a href="/wiki/Queue_(data_structure)" title="Queue (data structure)" class="mw-redirect">queues</a> and <a href="/wiki/Double-ended_queue" title="Double-ended queue">double-ended queue</a>, or <a href="/wiki/Stack_(data_structure)" title="Stack (data structure)" class="mw-redirect">stacks</a></li>
<li><a href="/wiki/XML" title="XML">XML</a> Processing (Parsing, Transforming, Validating) libraries</li>
<li>Security</li>
<li><a href="/wiki/Internationalization_and_localization" title="Internationalization and localization">Internationalization and localization</a> libraries</li>
</ul>
</li>
<li>The integration libraries, which allow the application writer to communicate with external systems. These libraries include:
<ul>
<li>The <a href="/wiki/Java_Database_Connectivity" title="Java Database Connectivity">Java Database Connectivity</a> (JDBC) <a href="/wiki/Application_programming_interface" title="Application programming interface">API</a> for database access</li>
<li><a href="/wiki/Java_Naming_and_Directory_Interface" title="Java Naming and Directory Interface">Java Naming and Directory Interface</a> (JNDI) for lookup and discovery</li>
<li><a href="/wiki/Java_remote_method_invocation" title="Java remote method invocation">RMI</a> and <a href="/wiki/Common_Object_Request_Broker_Architecture" title="Common Object Request Broker Architecture">CORBA</a> for distributed application development</li>
<li><a href="/wiki/Java_Management_Extensions" title="Java Management Extensions">JMX</a> for managing and monitoring applications</li>
</ul>
</li>
<li><a href="/wiki/User_interface" title="User interface">User interface</a> libraries, which include:
<ul>
<li>The (heavyweight, or <a href="/wiki/Native_mode" title="Native mode" class="mw-redirect">native</a>) <a href="/wiki/Abstract_Window_Toolkit" title="Abstract Window Toolkit">Abstract Window Toolkit</a> (AWT), which provides <a href="/wiki/Graphical_user_interface" title="Graphical user interface">GUI</a> components, the means for laying out those components and the means for handling events from those components</li>
<li>The (lightweight) <a href="/wiki/Swing_(Java)" title="Swing (Java)">Swing</a> libraries, which are built on AWT but provide (non-native) implementations of the AWT widgetry</li>
<li>APIs for audio capture, processing, and playback</li>
</ul>
</li>
</ul>
</li>
<li>A platform dependent implementation of the Java virtual machine that is the means by which the bytecodes of the Java libraries and third party applications are executed</li>
<li>Plugins, which enable <a href="/wiki/Java_applet" title="Java applet">applets</a> to be run in <a href="/wiki/Web_browser" title="Web browser">Web browsers</a></li>
<li><a href="/wiki/Java_Web_Start" title="Java Web Start">Java Web Start</a>, which allows Java applications to be efficiently distributed to <a href="/wiki/End-user" title="End-user" class="mw-redirect">end-users</a> across the <a href="/wiki/Internet" title="Internet">Internet</a></li>
<li>Licensing and documentation.</li>
</ul>
<h2><span class="mw-headline" id="Documentation">Documentation</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=23" title="Edit section: Documentation">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div class="rellink relarticle mainarticle">Main article: <a href="/wiki/Javadoc" title="Javadoc">Javadoc</a></div>
<p><a href="/wiki/Javadoc" title="Javadoc">Javadoc</a> is a comprehensive documentation system, created by <a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>, used by many Java developers. It provides developers with an organized system for documenting their code. <a href="/wiki/Javadoc" title="Javadoc">Javadoc</a> comments have an extra asterisk at the beginning, i.e. the tags are /** and */, whereas the normal multi-line comments in Java are set off with the tags /* and */.</p>
<h2><span class="mw-headline" id="Editions">Editions</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=24" title="Edit section: Editions">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div class="rellink boilerplate seealso">See also: <a href="/wiki/Free_Java_implementations#Class_library" title="Free Java implementations">Free Java implementations#Class library</a></div>
<table class="vertical-navbox nowraplinks" cellspacing="5" cellpadding="0" style="float:right;clear:right;width:22.0em;margin:0 0 1.0em 1.0em;background:#f9f9f9;border:1px solid #aaa;padding:0.2em;border-spacing:0.4em 0;text-align:center;line-height:1.4em;font-size:88%;">
<tr>
<th class="" style=";padding:0.2em 0.4em 0.2em;;font-size:145%;line-height:1.2em;"><a href="/wiki/Java_(software_platform)" title="Java (software platform)">Java</a> Editions</th>
</tr>
<tr>
<td class="" style="padding:0.2em 0 0.4em;"><a href="/wiki/File:Wave.svg" class="image"><img alt="Wave.svg" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/60px-Wave.svg.png" width="60" height="108" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/90px-Wave.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/120px-Wave.svg.png 2x" /></a></td>
</tr>
<tr>
<td class="plainlist" style="padding:0 0.1em 0.4em;font-weight:bold;">
<ul>
<li><a href="/wiki/Java_Card" title="Java Card">Java Card</a></li>
<li><a href="/wiki/Java_Platform,_Micro_Edition" title="Java Platform, Micro Edition">Micro Edition</a> (ME)</li>
<li><a href="/wiki/Java_Platform,_Standard_Edition" title="Java Platform, Standard Edition">Standard Edition</a> (SE)</li>
<li><a href="/wiki/Java_Platform,_Enterprise_Edition" title="Java Platform, Enterprise Edition">Enterprise Edition</a> (EE)</li>
<li><a href="/wiki/JavaFX" title="JavaFX">JavaFX</a></li>
<li><a href="/wiki/PersonalJava" title="PersonalJava">PersonalJava</a> (discontinued)</li>
</ul>
</td>
</tr>
<tr>
<td style="text-align:right;font-size:115%;">
<div class="noprint plainlinks hlist navbar mini" style="">
<ul>
<li class="nv-view"><a href="/wiki/Template:Java_platforms" title="Template:Java platforms"><span title="View this template" style="">v</span></a></li>
<li class="nv-talk"><a href="/wiki/Template_talk:Java_platforms" title="Template talk:Java platforms"><span title="Discuss this template" style="">t</span></a></li>
<li class="nv-edit"><a class="external text" href="//en.wikipedia.org/w/index.php?title=Template:Java_platforms&action=edit"><span title="Edit this template" style="">e</span></a></li>
</ul>
</div>
</td>
</tr>
</table>
<p>Sun has defined and supports four editions of Java targeting different application environments and segmented many of its <a href="/wiki/Application_programming_interface" title="Application programming interface">APIs</a> so that they belong to one of the platforms. The platforms are:</p>
<ul>
<li><a href="/wiki/Java_Card" title="Java Card">Java Card</a> for smartcards.</li>
<li><a href="/wiki/Java_Platform,_Micro_Edition" title="Java Platform, Micro Edition">Java Platform, Micro Edition</a> (Java ME) — targeting environments with limited resources.</li>
<li><a href="/wiki/Java_Platform,_Standard_Edition" title="Java Platform, Standard Edition">Java Platform, Standard Edition</a> (Java SE) — targeting workstation environments.</li>
<li><a href="/wiki/Java_Platform,_Enterprise_Edition" title="Java Platform, Enterprise Edition">Java Platform, Enterprise Edition</a> (Java EE) — targeting large distributed enterprise or Internet environments.</li>
</ul>
<p>The <a href="/wiki/Class_(computer_science)" title="Class (computer science)" class="mw-redirect">classes</a> in the Java APIs are organized into separate groups called <a href="/wiki/Java_package" title="Java package">packages</a>. Each package contains a set of related <a href="/wiki/Interface_(Java)" title="Interface (Java)">interfaces</a>, classes and <a href="/wiki/Exception_handling" title="Exception handling">exceptions</a>. Refer to the separate platforms for a description of the packages available.</p>
<p>The set of APIs is controlled by <a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> in cooperation with others through the <a href="/wiki/Java_Community_Process" title="Java Community Process">Java Community Process</a> program. Companies or individuals participating in this process can influence the design and development of the APIs. This process has been a subject of controversy.</p>
<p>Sun also provided an edition called <a href="/wiki/PersonalJava" title="PersonalJava">PersonalJava</a> that has been superseded by later, standards-based Java ME configuration-profile pairings.</p>
<h2><span class="mw-headline" id="See_also">See also</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=25" title="Edit section: See also">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div class="noprint tright portal" style="border:solid #aaa 1px;margin:0.5em 0 0.5em 1em;">
<table style="background:#f9f9f9;font-size:85%;line-height:110%;max-width:175px;">
<tr valign="middle">
<td style="text-align:center;"><a href="/wiki/File:Wave.svg" class="image"><img alt="Portal icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/15px-Wave.svg.png" width="15" height="28" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/23px-Wave.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/31px-Wave.svg.png 2x" /></a></td>
<td style="padding:0 0.2em;vertical-align:middle;font-style:italic;font-weight:bold;"><a href="/wiki/Portal:Java" title="Portal:Java">Java portal</a></td>
</tr>
<tr valign="middle">
<td style="text-align:center;"><a href="/wiki/File:8bit-dynamiclist.gif" class="image"><img alt="Portal icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/1/1d/8bit-dynamiclist.gif/28px-8bit-dynamiclist.gif" width="28" height="28" srcset="//upload.wikimedia.org/wikipedia/commons/1/1d/8bit-dynamiclist.gif 1.5x, //upload.wikimedia.org/wikipedia/commons/1/1d/8bit-dynamiclist.gif 2x" /></a></td>
<td style="padding:0 0.2em;vertical-align:middle;font-style:italic;font-weight:bold;"><a href="/wiki/Portal:Computer_programming" title="Portal:Computer programming">Computer programming portal</a></td>
</tr>
</table>
</div>
<table class="metadata mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9;">
<tr>
<td class="mbox-image"><img alt="Book icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Office-book.svg/30px-Office-book.svg.png" width="30" height="30" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Office-book.svg/45px-Office-book.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Office-book.svg/60px-Office-book.svg.png 2x" /></td>
<td class="mbox-text plainlist" style="">
<ul style="font-weight: bold">
<li><a href="/wiki/Book:Programming_for_Students" title="Book:Programming for Students">Book: Programming for Students</a></li>
</ul>
</td>
</tr>
</table>
<ul>
<li><a href="/wiki/Dalvik_(software)" title="Dalvik (software)">Dalvik</a></li>
<li><a href="/wiki/JavaOne" title="JavaOne">JavaOne</a></li>
<li><a href="/wiki/Javapedia" title="Javapedia" class="mw-redirect">Javapedia</a></li>
<li><a href="/wiki/List_of_Java_virtual_machines" title="List of Java virtual machines">List of Java virtual machines</a></li>
<li><a href="/wiki/List_of_Java_APIs" title="List of Java APIs">List of Java APIs</a></li>
<li><a href="/wiki/List_of_JVM_languages" title="List of JVM languages">List of JVM languages</a></li>
<li><a href="/wiki/Graal_(compiler)" title="Graal (compiler)">Graal</a>, a project aiming to implement a high performance Java dynamic compiler and interpreter</li>
</ul>
<h3><span class="mw-headline" id="Comparison_of_Java_with_other_languages">Comparison of Java with other languages</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=26" title="Edit section: Comparison of Java with other languages">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
<ul>
<li><a href="/wiki/Comparison_of_programming_languages" title="Comparison of programming languages">Comparison of programming languages</a></li>
<li><a href="/wiki/Comparison_of_Java_and_C%2B%2B" title="Comparison of Java and C++">Comparison of Java and C++</a></li>
<li><a href="/wiki/Comparison_of_Java_and_C_Sharp" title="Comparison of Java and C Sharp" class="mw-redirect">Comparison of Java and C#</a></li>
</ul>
<h2><span class="mw-headline" id="Notes">Notes</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=27" title="Edit section: Notes">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div class="reflist columns references-column-width" style="-moz-column-width: 30em; -webkit-column-width: 30em; column-width: 30em; list-style-type: decimal;">
<ol class="references">
<li id="cite_note-oraclejavahistory-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-oraclejavahistory_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-oraclejavahistory_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/javase/overview/javahistory-index-198355.html">"The History of Java Technology"</a><span class="reference-accessdate">. Retrieved October 6, 2012</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=The+History+of+Java+Technology&rft.genre=book&rft_id=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Foverview%2Fjavahistory-index-198355.html&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text">Java 5.0 added several new language features (the <a href="/wiki/Foreach" title="Foreach" class="mw-redirect">enhanced for loop</a>, <a href="/wiki/Autoboxing" title="Autoboxing" class="mw-redirect">autoboxing</a>, <a href="/wiki/Variadic_function" title="Variadic function">varargs</a> and <a href="/wiki/Java_annotation" title="Java annotation">annotations</a>), after they were introduced in the similar (and competing) <a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a> language <a rel="nofollow" class="external autonumber" href="http://www.barrycornelius.com/papers/java5/">[1]</a> <a rel="nofollow" class="external autonumber" href="http://www.levenez.com/lang/">[2]</a></span></li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><span class="citation web">Gosling, James; and McGilton, Henry (May 1996). <a rel="nofollow" class="external text" href="http://java.sun.com/docs/white/langenv/Intro.doc1.html#943">"The Java Language Environment"</a>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.au=Gosling%2C+James%3B+and+McGilton%2C+Henry&rft.aulast=Gosling%2C+James%3B+and+McGilton%2C+Henry&rft.btitle=The+Java+Language+Environment&rft.date=May+1996&rft.genre=book&rft_id=http%3A%2F%2Fjava.sun.com%2Fdocs%2Fwhite%2Flangenv%2FIntro.doc1.html%23943&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><span class="citation web">Gosling, James; Joy, Bill; Steele, Guy; and Bracha, Gilad. <a rel="nofollow" class="external text" href="http://java.sun.com/docs/books/jls/second_edition/html/intro.doc.html#237601">"The Java Language Specification, 2nd Edition"</a>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.au=Gosling%2C+James%3B+Joy%2C+Bill%3B+Steele%2C+Guy%3B+and+Bracha%2C+Gilad&rft.aulast=Gosling%2C+James%3B+Joy%2C+Bill%3B+Steele%2C+Guy%3B+and+Bracha%2C+Gilad&rft.btitle=The+Java+Language+Specification%2C+2nd+Edition&rft.genre=book&rft_id=http%3A%2F%2Fjava.sun.com%2Fdocs%2Fbooks%2Fjls%2Fsecond_edition%2Fhtml%2Fintro.doc.html%23237601&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.computerworld.com.au/index.php/id;1422447371;pp;3;fp;4194304;fpid;1">"The A-Z of Programming Languages: Modula-3"</a>. Computerworld.com.au<span class="reference-accessdate">. Retrieved 2010-06-09</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=The+A-Z+of+Programming+Languages%3A+Modula-3&rft.genre=book&rft_id=http%3A%2F%2Fwww.computerworld.com.au%2Findex.php%2Fid%3B1422447371%3Bpp%3B3%3Bfp%3B4194304%3Bfpid%3B1&rft.pub=Computerworld.com.au&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><a href="/wiki/Niklaus_Wirth" title="Niklaus Wirth">Niklaus Wirth</a> stated on a number of public occasions, e.g. in a lecture at the Polytechnic Museum, Moscow in September, 2005 (several independent first-hand accounts in Russian exist, e.g. one with an audio recording: <span class="citation web">Filippova, Elena (September 22, 2005). <a rel="nofollow" class="external text" href="http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1155">"Niklaus Wirth's lecture at the Polytechnic Museum in Moscow"</a>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.au=Filippova%2C+Elena&rft.aulast=Filippova%2C+Elena&rft.btitle=Niklaus+Wirth%27s+lecture+at+the+Polytechnic+Museum+in+Moscow&rft.date=September+22%2C+2005&rft.genre=book&rft_id=http%3A%2F%2Fwww.delphikingdom.com%2Fasp%2Fviewitem.asp%3Fcatalogid%3D1155&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span>), that the Sun Java design team licenced the Oberon compiler sources a number of years prior to the release of Java and examined it: a (relative) compactness, type safety, garbage collection, no multiple inheritance for classes -- all these key overall design features are shared by Java and Oberon.</span></li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><a href="/wiki/Patrick_Naughton" title="Patrick Naughton">Patrick Naughton</a> cites <a href="/wiki/Objective-C" title="Objective-C">Objective-C</a> as a strong influence on the design of the Java programming language, stating that notable direct derivatives include Java interfaces (derived from Objective-C's <a href="/wiki/Objective-C#Protocols" title="Objective-C">protocol</a>) and primitive wrapper classes. <a rel="nofollow" class="external autonumber" href="http://cs.gmu.edu/~sean/stuff/java-objc.html">[3]</a></span></li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><span class="citation web">TechMetrix Research (1999). <a rel="nofollow" class="external text" href="http://www.fscript.org/prof/javapassport.pdf">"History of Java"</a>. <i>Java Application Servers Report</i>. "The project went ahead under the name "green" and the language was based on an old model of <a href="/wiki/UCSD_Pascal" title="UCSD Pascal">UCSD Pascal</a>, which makes it possible to generate interpretive code"</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.atitle=History+of+Java&rft.aulast=TechMetrix+Research&rft.au=TechMetrix+Research&rft.date=1999&rft.genre=article&rft_id=http%3A%2F%2Fwww.fscript.org%2Fprof%2Fjavapassport.pdf&rft.jtitle=Java+Application+Servers+Report&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://queue.acm.org/detail.cfm?id=1017013">"A Conversation with James Gosling ‚Äì ACM Queue"</a>. Queue.acm.org. 2004-08-31<span class="reference-accessdate">. Retrieved 2010-06-09</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=A+Conversation+with+James+Gosling+%E2%80%93+ACM+Queue&rft.date=2004-08-31&rft.genre=book&rft_id=http%3A%2F%2Fqueue.acm.org%2Fdetail.cfm%3Fid%3D1017013&rft.pub=Queue.acm.org&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.langpop.com/">"Programming Language Popularity"</a>. 2009<span class="reference-accessdate">. Retrieved 2009-01-16</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=Programming+Language+Popularity&rft.date=2009&rft.genre=book&rft_id=http%3A%2F%2Fwww.langpop.com%2F&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">"TIOBE Programming Community Index"</a>. 2009<span class="reference-accessdate">. Retrieved 2009-05-06</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=TIOBE+Programming+Community+Index&rft.date=2009&rft.genre=book&rft_id=http%3A%2F%2Fwww.tiobe.com%2Findex.php%2Fcontent%2Fpaperinfo%2Ftpci%2Findex.html&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><span class="citation web">Byous, Jon (ca. 1998). <a rel="nofollow" class="external text" href="http://web.archive.org/web/20050420081440/http://java.sun.com/features/1998/05/birthday.html">"Java technology: The early years"</a>. <i>Sun Developer Network</i>. <a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>. Archived from <a rel="nofollow" class="external text" href="http://java.sun.com/features/1998/05/birthday.html">the original</a> on April 20, 2005<span class="reference-accessdate">. Retrieved 2005-04-22</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.atitle=Java+technology%3A+The+early+years&rft.au=Byous%2C+Jon&rft.aufirst=Jon&rft.aulast=Byous&rft.date=ca.+1998&rft.genre=article&rft_id=http%3A%2F%2Fjava.sun.com%2Ffeatures%2F1998%2F05%2Fbirthday.html&rft.jtitle=Sun+Developer+Network&rft.pub=Sun+Microsystems&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text">Object-oriented programming <span class="citation web"><a rel="nofollow" class="external text" href="http://www.java.com/en/javahistory/">"The History of Java Technology"</a>. <i>Sun Developer Network</i>. ca. 1995<span class="reference-accessdate">. Retrieved 2010-04-30</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.atitle=The+History+of+Java+Technology&rft.date=ca.+1995&rft.genre=article&rft_id=http%3A%2F%2Fwww.java.com%2Fen%2Fjavahistory%2F&rft.jtitle=Sun+Developer+Network&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text">"<a rel="nofollow" class="external text" href="http://www.javaworld.com/jw-10-1996/jw-10-javaname.html">So why did they decide to call it Java?</a>", Kieron Murphy, JavaWorld.com, 10/04/96</span></li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text">Kabutz, Heinz; <a rel="nofollow" class="external text" href="http://www.artima.com/weblogs/viewpost.jsp?thread=7555"><i>Once Upon an Oak</i></a>. Artima. Retrieved April 29, 2007.</span></li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.open-std.org/JTC1/SC22/JSG/">Java Study Group</a>; <a rel="nofollow" class="external text" href="http://csdl2.computer.org/comp/proceedings/hicss/2001/0981/05/09815015.pdf">Why Java Was – Not – Standardized Twice</a>; <a rel="nofollow" class="external text" href="http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2832719,00.html">What is ECMA—and why Microsoft cares</a></span></li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.jcp.org/en/home/index">"Java Community Process website"</a>. Jcp.org. 2010-05-24<span class="reference-accessdate">. Retrieved 2010-06-09</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=Java+Community+Process+website&rft.date=2010-05-24&rft.genre=book&rft_id=http%3A%2F%2Fwww.jcp.org%2Fen%2Fhome%2Findex&rft.pub=Jcp.org&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://open.itworld.com/4915/070508opsjava/page_1.html">"JAVAONE: Sun ‚Äì The bulk of Java is open sourced"</a>. open.itworld.com<span class="reference-accessdate">. Retrieved 2010-06-09</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=JAVAONE%3A+Sun+%E2%80%93+The+bulk+of+Java+is+open+sourced&rft.genre=book&rft_id=http%3A%2F%2Fopen.itworld.com%2F4915%2F070508opsjava%2Fpage_1.html&rft.pub=open.itworld.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span><sup class="noprint Inline-Template"><span title=" since June 2012" style="white-space: nowrap;">[<i><a href="/wiki/Wikipedia:Link_rot" title="Wikipedia:Link rot">dead link</a></i>]</span></sup></span></li>
<li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://onjava.com/pub/a/onjava/2002/04/17/evangelism.html">"Sun‚Äôs Evolving Role as Java Evangelist"</a>. <a href="/wiki/O%27Reilly_Media" title="O'Reilly Media">O'Reilly Media</a>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=Sun%E2%80%99s+Evolving+Role+as+Java+Evangelist&rft.genre=book&rft_id=http%3A%2F%2Fonjava.com%2Fpub%2Fa%2Fonjava%2F2002%2F04%2F17%2Fevangelism.html&rft.pub=O%27Reilly+Media&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.oracle.com/us/technologies/java/index.html">"Oracle and Java"</a>. <i>oracle.com</i>. Oracle Corporation<span class="reference-accessdate">. Retrieved 2010-08-23</span>. "Oracle has been a leading and substantive supporter of Java since its emergence in 1995 and takes on the new role as steward of Java technology with a relentless commitment to fostering a community of participation and transparency."</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.atitle=Oracle+and+Java&rft.genre=article&rft_id=http%3A%2F%2Fwww.oracle.com%2Fus%2Ftechnologies%2Fjava%2Findex.html&rft.jtitle=oracle.com&rft.pub=Oracle+Corporation&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.java.com/en/about/">"Learn About Java Technology"</a>. Oracle<span class="reference-accessdate">. Retrieved 21 November 2011</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=Learn+About+Java+Technology&rft.genre=book&rft_id=http%3A%2F%2Fwww.java.com%2Fen%2Fabout%2F&rft.pub=Oracle&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><span class="citation web"><a href="/wiki/James_Gosling" title="James Gosling">Gosling, James</a> (April 9, 2010). <a rel="nofollow" class="external text" href="http://nighthacks.com/roller/jag/entry/time_to_move_on">"Time to move on..."</a>. <i>On a New Road</i><span class="reference-accessdate">. Retrieved 2011-11-16</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.atitle=Time+to+move+on...&rft.aufirst=James&rft.au=Gosling%2C+James&rft.aulast=Gosling&rft.date=April+9%2C+2010&rft.genre=article&rft_id=http%3A%2F%2Fnighthacks.com%2Froller%2Fjag%2Fentry%2Ftime_to_move_on&rft.jtitle=On+a+New+Road&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/intro-141325.html">"The Java Language Environment"</a>. <i>1.2 Design Goals of the Java‚Ñ¢ Programming Language</i>. Oracle. 1999-01-01<span class="reference-accessdate">. Retrieved 2013-01-14</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.atitle=1.2+Design+Goals+of+the+Java%26trade%3B+Programming+Language&rft.btitle=The+Java+Language+Environment&rft.date=1999-01-01&rft.genre=bookitem&rft_id=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fintro-141325.html&rft.pub=Oracle&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text"><span class="citation news">Niccolai, James (January 23, 2001). <a rel="nofollow" class="external text" href="http://www.javaworld.com/javaworld/jw-01-2001/jw-0124-iw-mssuncourt.html">"Sun, Microsoft settle Java lawsuit"</a>. <i>JavaWorld</i> (<a href="/wiki/IDG" title="IDG">IDG</a>)<span class="reference-accessdate">. Retrieved 2008-07-09</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.atitle=Sun%2C+Microsoft+settle+Java+lawsuit&rft.aulast=Niccolai%2C+James&rft.au=Niccolai%2C+James&rft.date=January+23%2C+2001&rft.genre=article&rft_id=http%3A%2F%2Fwww.javaworld.com%2Fjavaworld%2Fjw-01-2001%2Fjw-0124-iw-mssuncourt.html&rft.jtitle=JavaWorld&rft.pub=IDG&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-25">^</a></b></span> <span class="reference-text"><span class="citation web">Jelovic, Dejan. <a rel="nofollow" class="external text" href="http://www.jelovic.com/articles/why_java_is_slow.htm">"Why Java will always be slower than C++"</a><span class="reference-accessdate">. Retrieved 2008-02-15</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.aufirst=Dejan&rft.au=Jelovic%2C+Dejan&rft.aulast=Jelovic&rft.btitle=Why+Java+will+always+be+slower+than+C%2B%2B&rft.genre=book&rft_id=http%3A%2F%2Fwww.jelovic.com%2Farticles%2Fwhy_java_is_slow.htm&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-26">^</a></b></span> <span class="reference-text"><span class="citation web">Google. <a rel="nofollow" class="external text" href="https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdf">"Loop Recognition in C++/Java/Go/Scala"</a><span class="reference-accessdate">. Retrieved 2012-07-12</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.au=Google&rft.aulast=Google&rft.btitle=Loop+Recognition+in+C%2B%2B%2FJava%2FGo%2FScala&rft.genre=book&rft_id=https%3A%2F%2Fdays2011.scala-lang.org%2Fsites%2Fdays2011%2Ffiles%2Fws3-1-Hundt.pdf&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-27">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.symantec.com/about/news/release/article.jsp?prid=19970407_03">"Symantec's Just-In-Time Java Compiler To Be Integrated Into Sun JDK 1.1"</a>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=Symantec%27s+Just-In-Time+Java+Compiler+To+Be+Integrated+Into+Sun+JDK+1.1&rft.genre=book&rft_id=http%3A%2F%2Fwww.symantec.com%2Fabout%2Fnews%2Frelease%2Farticle.jsp%3Fprid%3D19970407_03&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-28">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html">"NullPointerException"</a>. Java.sun.com<span class="reference-accessdate">. Retrieved 2010-06-09</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=NullPointerException&rft.genre=book&rft_id=http%3A%2F%2Fjava.sun.com%2Fj2se%2F1.4.2%2Fdocs%2Fapi%2Fjava%2Flang%2FNullPointerException.html&rft.pub=Java.sun.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-29"><span class="mw-cite-backlink"><b><a href="#cite_ref-29">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.artima.com/designtechniques/exceptions.html">"Exceptions in Java"</a>. Artima.com<span class="reference-accessdate">. Retrieved 2010-08-10</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=Exceptions+in+Java&rft.genre=book&rft_id=http%3A%2F%2Fwww.artima.com%2Fdesigntechniques%2Fexceptions.html&rft.pub=Artima.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-30">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html">"Java HotSpot VM Options"</a>. Oracle.com. 2010-09-07<span class="reference-accessdate">. Retrieved 2012-06-30</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=Java+HotSpot+VM+Options&rft.date=2010-09-07&rft.genre=book&rft_id=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Ftech%2Fvmoptions-jsp-140102.html&rft.pub=Oracle.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-31"><span class="mw-cite-backlink"><b><a href="#cite_ref-31">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/tutorial/getStarted/application/index.html">"Lesson: A Closer Look at the "Hello World!" Application"</a>. <i>The Java‚Ñ¢ Tutorials > Getting Started</i>. <a href="/wiki/Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a><span class="reference-accessdate">. Retrieved 2011-04-14</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.atitle=Lesson%3A+A+Closer+Look+at+the+%22Hello+World%21%22+Application&rft.genre=article&rft_id=http%3A%2F%2Fdownload.oracle.com%2Fjavase%2Ftutorial%2FgetStarted%2Fapplication%2Findex.html&rft.jtitle=The+Java%E2%84%A2+Tutorials+%3E+Getting+Started&rft.pub=Oracle+Corporation&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-32">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/1.5.0/docs/guide/plugin/developer_guide/using_tags.html">"Using applet, object and embed Tags"</a>. oracle.com<span class="reference-accessdate">. Retrieved 2010-10-14</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=Using+applet%2C+object+and+embed+Tags&rft.genre=book&rft_id=http%3A%2F%2Fdownload.oracle.com%2Fjavase%2F1.5.0%2Fdocs%2Fguide%2Fplugin%2Fdeveloper_guide%2Fusing_tags.html&rft.pub=oracle.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-33">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/1.5.0/docs/guide/plugin/developer_guide/using_tags.html#mixed">"Deploying Applets in a Mixed-Browser Environment"</a>. oracle.com<span class="reference-accessdate">. Retrieved 2010-10-14</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=Deploying+Applets+in+a+Mixed-Browser+Environment&rft.genre=book&rft_id=http%3A%2F%2Fdownload.oracle.com%2Fjavase%2F1.5.0%2Fdocs%2Fguide%2Fplugin%2Fdeveloper_guide%2Fusing_tags.html%23mixed&rft.pub=oracle.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-34">^</a></b></span> <span class="reference-text"><span class="citation web">Arnold, Ken. <a rel="nofollow" class="external text" href="http://weblogs.java.net/blog/arnold/archive/2005/06/generics_consid_1.html">"Generics Considered Harmful"</a>. java.net<span class="reference-accessdate">. Retrieved 4 July 2011</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.au=Arnold%2C+Ken&rft.aufirst=Ken&rft.aulast=Arnold&rft.btitle=Generics+Considered+Harmful&rft.genre=book&rft_id=http%3A%2F%2Fweblogs.java.net%2Fblog%2Farnold%2Farchive%2F2005%2F06%2Fgenerics_consid_1.html&rft.pub=java.net&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-35">^</a></b></span> <span class="reference-text"><span class="citation web">Goetz, Brian (2005-09-27). <a rel="nofollow" class="external text" href="http://www.ibm.com/developerworks/java/library/j-jtp09275/index.html">"Java theory and practice: Urban performance legends, revisited"</a>. ibm.com<span class="reference-accessdate">. Retrieved 2012-11-26</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.aufirst=Brian&rft.au=Goetz%2C+Brian&rft.aulast=Goetz&rft.btitle=Java+theory+and+practice%3A+Urban+performance+legends%2C+revisited&rft.date=2005-09-27&rft.genre=book&rft_id=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fjava%2Flibrary%2Fj-jtp09275%2Findex.html&rft.pub=ibm.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span> "The Java language is the target of a lot of abuse for performance."</span></li>
<li id="cite_note-36"><span class="mw-cite-backlink"><b><a href="#cite_ref-36">^</a></b></span> <span class="reference-text"><span class="citation web">Jelovic, Dejan. <a rel="nofollow" class="external text" href="http://www.jelovic.com/articles/why_java_is_slow.htm">"Why Java Will Always Be Slower than C++"</a>. www.jelovic.com<span class="reference-accessdate">. Retrieved 17 October 2012</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.aufirst=Dejan&rft.au=Jelovic%2C+Dejan&rft.aulast=Jelovic&rft.btitle=Why+Java+Will+Always+Be+Slower+than+C%2B%2B&rft.genre=book&rft_id=http%3A%2F%2Fwww.jelovic.com%2Farticles%2Fwhy_java_is_slow.htm&rft.pub=www.jelovic.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-37"><span class="mw-cite-backlink"><b><a href="#cite_ref-37">^</a></b></span> <span class="reference-text"><span class="citation web">Owens, Sean R. <a rel="nofollow" class="external text" href="http://web.archive.org/web/20090220171410/http://darksleep.com/player/JavaAndUnsignedTypes.html">"Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)"</a>. Archived from <a rel="nofollow" class="external text" href="http://darksleep.com/player/JavaAndUnsignedTypes.html">the original</a> on 2004-11-09<span class="reference-accessdate">. Retrieved 2011-07-04</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.aufirst=Sean+R.&rft.aulast=Owens&rft.au=Owens%2C+Sean+R.&rft.btitle=Java+and+unsigned+int%2C+unsigned+short%2C+unsigned+byte%2C+unsigned+long%2C+etc.+%28Or+rather%2C+the+lack+thereof%29&rft.genre=book&rft_id=http%3A%2F%2Fdarksleep.com%2Fplayer%2FJavaAndUnsignedTypes.html&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-38">^</a></b></span> <span class="reference-text"><span class="citation web">Kahan, William. <a rel="nofollow" class="external text" href="http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf">"How Java‚Äôs Floating-Point Hurts Everyone Everywhere"</a>. Electrical Engineering & Computer Science, University of California at Berkeley<span class="reference-accessdate">. Retrieved 4 June 2011</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.aufirst=William&rft.au=Kahan%2C+William&rft.aulast=Kahan&rft.btitle=How+Java%E2%80%99s+Floating-Point+Hurts+Everyone+Everywhere&rft.genre=book&rft_id=http%3A%2F%2Fwww.cs.berkeley.edu%2F~wkahan%2FJAVAhurt.pdf&rft.pub=Electrical+Engineering+%26+Computer+Science%2C+University+of+California+at+Berkeley&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-39">^</a></b></span> <span class="reference-text"><span class="citation web"><a rel="nofollow" class="external text" href="http://blogs.technet.com/b/mmpc/archive/2010/10/18/have-you-checked-the-java.aspx">"Have you checked the Java?"</a>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.btitle=Have+you+checked+the+Java%3F&rft.genre=book&rft_id=http%3A%2F%2Fblogs.technet.com%2Fb%2Fmmpc%2Farchive%2F2010%2F10%2F18%2Fhave-you-checked-the-java.aspx&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-40"><span class="mw-cite-backlink"><b><a href="#cite_ref-40">^</a></b></span> <span class="reference-text"><span class="citation web">Marquit, Miranda (2013-09-26). <a rel="nofollow" class="external text" href="http://insidetechtalk.com/javaone-programming-language-ready-revolution/">"JavaOne: #1 Programming Language Ready for Revolution"</a>. insidetechtalk.com<span class="reference-accessdate">. Retrieved 2013-10-08</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.aufirst=Miranda&rft.aulast=Marquit&rft.au=Marquit%2C+Miranda&rft.btitle=JavaOne%3A+%231+Programming+Language+Ready+for+Revolution&rft.date=2013-09-26&rft.genre=book&rft_id=http%3A%2F%2Finsidetechtalk.com%2Fjavaone-programming-language-ready-revolution%2F&rft.pub=insidetechtalk.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span> "JavaOne 2013 featured a technical keynote that described some of the features of the next incarnation of Java.</span></li>
<li id="cite_note-41"><span class="mw-cite-backlink"><b><a href="#cite_ref-41">^</a></b></span> <span class="reference-text"><span class="citation web">Mullin, Joe. <a rel="nofollow" class="external text" href="http://arstechnica.com/tech-policy/news/2012/05/jury-rules-google-violated-copyright-law-google-moves-for-mistrial.ars">"Google guilty of infringement in Oracle trial; future legal headaches loom"</a>. <i>Law & Disorder</i>. Ars Technica<span class="reference-accessdate">. Retrieved 8 May 2012</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.atitle=Google+guilty+of+infringement+in+Oracle+trial%3B+future+legal+headaches+loom&rft.aufirst=Joe&rft.aulast=Mullin&rft.au=Mullin%2C+Joe&rft.genre=article&rft_id=http%3A%2F%2Farstechnica.com%2Ftech-policy%2Fnews%2F2012%2F05%2Fjury-rules-google-violated-copyright-law-google-moves-for-mistrial.ars&rft.jtitle=Law+%26+Disorder&rft.pub=Ars+Technica&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li>
<li id="cite_note-42"><span class="mw-cite-backlink"><b><a href="#cite_ref-42">^</a></b></span> <span class="reference-text"><span class="citation web">Joe Mullin (May 31, 2012). <a rel="nofollow" class="external text" href="http://arstechnica.com/tech-policy/2012/05/google-wins-crucial-api-ruling-oracles-case-decimated/">"Google wins crucial API ruling, Oracle‚Äôs case decimated"</a>. <i>Ars Technica</i><span class="reference-accessdate">. Retrieved 2012-06-01</span>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.atitle=Google+wins+crucial+API+ruling%2C+Oracle%E2%80%99s+case+decimated&rft.au=Joe+Mullin&rft.aulast=Joe+Mullin&rft.date=May+31%2C+2012&rft.genre=article&rft_id=http%3A%2F%2Farstechnica.com%2Ftech-policy%2F2012%2F05%2Fgoogle-wins-crucial-api-ruling-oracles-case-decimated%2F&rft.jtitle=Ars+Technica&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;"> </span></span></span></li>
</ol>
</div>
<h2><span class="mw-headline" id="References">References</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=28" title="Edit section: References">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<div class="refbegin" style="">
<ul>
<li><a href="/wiki/James_Gosling" title="James Gosling">Gosling, James</a>, <a rel="nofollow" class="external text" href="https://duke.dev.java.net/green/"><i>A brief history of the Green project</i></a>.<sup class="noprint Inline-Template"><span title=" since June 2011" style="white-space: nowrap;">[<i><a href="/wiki/Wikipedia:Link_rot" title="Wikipedia:Link rot">dead link</a></i>]</span></sup> Java.net, no date [ca. Q1/1998]. Retrieved April 29, 2007.</li>
<li><a href="/wiki/James_Gosling" title="James Gosling">Gosling, James</a>, <a rel="nofollow" class="external text" href="http://www.anonymous-insider.net/java/research/1998/05-a.html"><i>A brief history of the Green project</i></a>. anonymous-insider.net, no date [ca. Q1/1998]. Retrieved September 4, 2013.</li>
<li><span class="citation book">Gosling, James; <a href="/wiki/Bill_Joy" title="Bill Joy">Joy, Bill</a>; <a href="/wiki/Guy_L._Steele,_Jr." title="Guy L. Steele, Jr.">Steele, Guy L., Jr.</a>; <a href="/wiki/Gilad_Bracha" title="Gilad Bracha">Bracha, Gilad</a> (2005). <a rel="nofollow" class="external text" href="http://java.sun.com/docs/books/jls/index.html"><i>The Java Language Specification</i></a> (3rd ed.). Addison-Wesley. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <a href="/wiki/Special:BookSources/0-321-24678-0" title="Special:BookSources/0-321-24678-0">0-321-24678-0</a>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.au=Bracha%2C+Gilad&rft.aufirst=James&rft.au=Gosling%2C+James&rft.au=Joy%2C+Bill&rft.aulast=Gosling&rft.au=Steele%2C+Guy+L.%2C+Jr.&rft.btitle=The+Java+Language+Specification&rft.date=2005&rft.edition=3rd&rft.genre=book&rft_id=http%3A%2F%2Fjava.sun.com%2Fdocs%2Fbooks%2Fjls%2Findex.html&rft.isbn=0-321-24678-0&rft.pub=Addison-Wesley&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></li>
<li><span class="citation book">Lindholm, Tim; Yellin, Frank (1999). <a rel="nofollow" class="external text" href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html"><i>The Java Virtual Machine Specification</i></a> (2nd ed.). Addison-Wesley. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <a href="/wiki/Special:BookSources/0-201-43294-3" title="Special:BookSources/0-201-43294-3">0-201-43294-3</a>.</span><span title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AJava+%28programming+language%29&rft.aufirst=Tim&rft.aulast=Lindholm&rft.au=Lindholm%2C+Tim&rft.au=Yellin%2C+Frank&rft.btitle=The+Java+Virtual+Machine+Specification&rft.date=1999&rft.edition=2nd&rft.genre=book&rft_id=http%3A%2F%2Fjava.sun.com%2Fdocs%2Fbooks%2Fvmspec%2F2nd-edition%2Fhtml%2FVMSpecTOC.doc.html&rft.isbn=0-201-43294-3&rft.pub=Addison-Wesley&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;"> </span></span></li>
</ul>
</div>
<h2><span class="mw-headline" id="External_links">External links</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java_(programming_language)&action=edit&section=29" title="Edit section: External links">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<table class="metadata plainlinks mbox-small" style="padding:0.25em 0.5em 0.5em 0.75em;border:1px solid #aaa;background:#f9f9f9;">
<tr style="height:25px;">
<td colspan="2" style="padding-bottom:0.5em;border-bottom:1px solid #aaa;margin:auto;text-align:center;">Find more about <b>Java (programming language)</b> at Wikipedia's <a href="/wiki/Wikipedia:Wikimedia_sister_projects" title="Wikipedia:Wikimedia sister projects">sister projects</a></td>
</tr>
<tr style="height:25px;">
<td style="padding-top:0.75em;"><a href="//en.wiktionary.org/wiki/Java" title="Search Wiktionary"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Wiktionary-logo-en.svg/23px-Wiktionary-logo-en.svg.png" width="23" height="25" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Wiktionary-logo-en.svg/35px-Wiktionary-logo-en.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Wiktionary-logo-en.svg/46px-Wiktionary-logo-en.svg.png 2x" /></a></td>
<td style="padding-top:0.75em;"><a href="//en.wiktionary.org/wiki/Java" class="extiw" title="wikt:Java">Definitions and translations</a> from Wiktionary</td>
</tr>
<tr style="height:25px;">
<td><a href="//commons.wikimedia.org/wiki/Category:Java_(programming_language)" title="Search Commons"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/18px-Commons-logo.svg.png" width="18" height="25" srcset="//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/28px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/37px-Commons-logo.svg.png 2x" /></a></td>
<td><a href="//commons.wikimedia.org/wiki/Category:Java_(programming_language)" class="extiw" title="commons:Category:Java (programming language)">Media</a> from Commons</td>
</tr>
<tr style="height:25px;">
<td><a href="//en.wikiversity.org/wiki/Java" title="Search Wikiversity"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Wikiversity-logo-en.svg/25px-Wikiversity-logo-en.svg.png" width="25" height="23" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Wikiversity-logo-en.svg/38px-Wikiversity-logo-en.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Wikiversity-logo-en.svg/50px-Wikiversity-logo-en.svg.png 2x" /></a></td>
<td><a href="//en.wikiversity.org/wiki/Java" class="extiw" title="v:Java">Learning resources</a> from Wikiversity</td>
</tr>
<tr style="height:25px;">
<td><a href="//en.wikiquote.org/wiki/Special:Search/Java_(programming_language)" title="Search Wikiquote"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/21px-Wikiquote-logo.svg.png" width="21" height="25" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/32px-Wikiquote-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikiquote-logo.svg/42px-Wikiquote-logo.svg.png 2x" /></a></td>
<td><a href="//en.wikiquote.org/wiki/Special:Search/Java_(programming_language)" class="extiw" title="q:Special:Search/Java (programming language)">Quotations</a> from Wikiquote</td>
</tr>
<tr style="height:25px;">
<td><a href="//en.wikibooks.org/wiki/Subject:Java_programming_language" title="Search Wikibooks"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/25px-Wikibooks-logo.svg.png" width="25" height="25" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/38px-Wikibooks-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/50px-Wikibooks-logo.svg.png 2x" /></a></td>
<td><a href="//en.wikibooks.org/wiki/Subject:Java_programming_language" class="extiw" title="b:Subject:Java programming language">Textbooks</a> from Wikibooks</td>
</tr>
</table>
<table class="metadata mbox-small plainlinks" style="border:1px solid #aaa; background-color:#f9f9f9;">
<tr>
<td class="mbox-image"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/9/91/Wikiversity-logo.svg/40px-Wikiversity-logo.svg.png" width="40" height="32" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/9/91/Wikiversity-logo.svg/60px-Wikiversity-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/91/Wikiversity-logo.svg/80px-Wikiversity-logo.svg.png 2x" /></td>
<td class="mbox-text plainlist" style="">Wikiversity has learning materials about <i><b><a href="//en.wikiversity.org/wiki/Java_Platform,_Enterprise_Edition/Java_EE_Tutorial" class="extiw" title="v:Java Platform, Enterprise Edition/Java EE Tutorial">Java Platform, Enterprise Edition/Java EE Tutorial</a></b></i></td>
</tr>
</table>
<ul>
<li><a rel="nofollow" class="external text" href="http://www.java.com/">java.com</a> - Java for end-users</li>
<li>Oracle's <a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/">Developer Resources for Java Technology</a></li>
<li><a rel="nofollow" class="external text" href="http://download.oracle.com/javase/7/docs/api/">Java SE 7 API Javadocs</a></li>
<li>Oracle's <a rel="nofollow" class="external text" href="http://download.oracle.com/javase/tutorial/index.html">Beginner's tutorial for Java SE Programming</a></li>
<li><a rel="nofollow" class="external text" href="https://duke.dev.java.net/green/">A Brief History of the Green Project</a> (dead link)</li>
<li>Michael O'Connell: <a rel="nofollow" class="external text" href="http://sunsite.uakom.sk/sunworldonline/swol-07-1995/swol-07-java.html">Java: The Inside Story</a>, SunWord (1995)</li>
<li>Patrick Naughton: <a rel="nofollow" class="external text" href="http://cs.gmu.edu/~sean/stuff/java-objc.html">Java Was Strongly Influenced by Objective-C</a></li>
<li>David Bank: <a rel="nofollow" class="external text" href="http://www.wired.com/wired/archive/3.12/java.saga.html">The Java Saga</a>, <i>Wired</i> Issue 3.12 (1995)</li>
<li>Patrick Naughton: <a rel="nofollow" class="external text" href="http://www.blinkenlights.com/classiccmp/javaorigin.html">The Long Strange Trip to Java</a> (1996)</li>
<li>Open University (UK): <a rel="nofollow" class="external text" href="http://computing.open.ac.uk/m254/">M254 Java Everywhere</a> (free open content documents)</li>
<li>is-research GmbH: <a rel="nofollow" class="external text" href="http://www.is-research.de/info/vmlanguages/">List of programming languages for a Java Virtual Machine</a></li>
<li><a rel="nofollow" class="external text" href="http://www.eecs.berkeley.edu/~wkahan/JAVAhurt.pdf">How Java's Floating-Point Hurts Everyone Everywhere</a>, by W. Kahan and Joseph D. Darcy, University of California, Berkeley</li>
<li>Shahrooz Feizabadi: <a rel="nofollow" class="external text" href="http://ei.cs.vt.edu/~wwwbtb/book/chap1/java_hist.html">A history of Java</a> in: Marc Abrams, ed., <i>World Wide Web ‚Äì Beyond the Basics</i>, Prentice Hall (1998)</li>
</ul>
<table cellspacing="0" class="navbox" style="border-spacing:0;">
<tr>
<td style="padding:2px;">
<table cellspacing="0" class="nowraplinks collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit;">
<tr>
<th scope="col" class="navbox-title" colspan="3">
<div class="noprint plainlinks hlist navbar mini">
<ul>
<li class="nv-view"><a href="/wiki/Template:Java_(software_platform)" title="Template:Java (software platform)"><span title="View this template" style=";;background:none transparent;border:none;;">v</span></a></li>
<li class="nv-talk"><a href="/wiki/Template_talk:Java_(software_platform)" title="Template talk:Java (software platform)"><span title="Discuss this template" style=";;background:none transparent;border:none;;">t</span></a></li>
<li class="nv-edit"><a class="external text" href="//en.wikipedia.org/w/index.php?title=Template:Java_(software_platform)&action=edit"><span title="Edit this template" style=";;background:none transparent;border:none;;">e</span></a></li>
</ul>
</div>
<div style="font-size:110%;"><a href="/wiki/Java_(software_platform)" title="Java (software platform)">Java</a></div>
</th>
</tr>
<tr style="height:2px;">
<td></td>
</tr>
<tr>
<th scope="row" class="navbox-group">Java platforms</th>
<td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><strong class="selflink">Java language</strong></li>
<li><a href="/wiki/Java_virtual_machine" title="Java virtual machine">JVM</a></li>
<li><a href="/wiki/Java_Platform,_Micro_Edition" title="Java Platform, Micro Edition">Micro Edition</a></li>
<li><a href="/wiki/Java_Platform,_Standard_Edition" title="Java Platform, Standard Edition">Standard Edition</a></li>
<li><a href="/wiki/Java_Platform,_Enterprise_Edition" title="Java Platform, Enterprise Edition">Enterprise Edition</a></li>
<li><a href="/wiki/Java_Card" title="Java Card">Java Card</a></li>
<li><a href="/wiki/Android_SDK" title="Android SDK" class="mw-redirect">Android SDK</a></li>
</ul>
</div>
</td>
<td class="navbox-image" rowspan="13" style="width:0%;padding:0px 0px 0px 2px;">
<div><a href="/wiki/File:Wave.svg" class="image"><img alt="Wave.svg" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/75px-Wave.svg.png" width="75" height="135" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/113px-Wave.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/40/Wave.svg/150px-Wave.svg.png 2x" /></a></div>
</td>
</tr>
<tr style="height:2px;">
<td></td>
</tr>
<tr>
<th scope="row" class="navbox-group">Sun technologies</th>
<td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/Squawk_virtual_machine" title="Squawk virtual machine">Squawk</a></li>
<li><a href="/wiki/Java_Development_Kit" title="Java Development Kit">Java Development Kit</a></li>
<li><a href="/wiki/OpenJDK" title="OpenJDK">OpenJDK</a></li>
<li><a href="/wiki/Java_virtual_machine" title="Java virtual machine">Java virtual machine</a></li>
<li><a href="/wiki/JavaFX" title="JavaFX">JavaFX</a></li>
<li><a href="/wiki/Maxine_Virtual_Machine" title="Maxine Virtual Machine">Maxine VM</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td></td>
</tr>
<tr>
<th scope="row" class="navbox-group">Platform technologies</th>
<td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/Java_applet" title="Java applet">Applets</a></li>
<li><a href="/wiki/Java_Servlet" title="Java Servlet">Servlets</a></li>
<li><a href="/wiki/MIDlet" title="MIDlet">MIDlets</a></li>
<li><a href="/wiki/JavaServer_Pages" title="JavaServer Pages">JSP</a></li>
<li><a href="/wiki/Java_Web_Start" title="Java Web Start">Web Start (JNLP)</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td></td>
</tr>
<tr>
<th scope="row" class="navbox-group">Major third-party technologies</th>
<td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/JRockit" title="JRockit">JRockit</a></li>
<li><a href="/wiki/GNU_Classpath" title="GNU Classpath">GNU Classpath</a></li>
<li><a href="/wiki/Kaffe" title="Kaffe">Kaffe</a></li>
<li><a href="/wiki/TopLink" title="TopLink">TopLink</a></li>
<li><a href="/wiki/Apache_Harmony" title="Apache Harmony">Apache Harmony</a></li>
<li><a href="/wiki/Apache_Struts" title="Apache Struts">Apache Struts</a></li>
<li><a href="/wiki/Spring_framework" title="Spring framework" class="mw-redirect">Spring framework</a></li>
<li><a href="/wiki/Hibernate_(Java)" title="Hibernate (Java)">Hibernate</a></li>
<li><a href="/wiki/JBoss_application_server" title="JBoss application server" class="mw-redirect">JBoss application server</a></li>
<li><a href="/wiki/Tapestry_(programming)" title="Tapestry (programming)" class="mw-redirect">Tapestry</a></li>
<li><a href="/wiki/Jazelle" title="Jazelle">Jazelle</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td></td>
</tr>
<tr>
<th scope="row" class="navbox-group">History</th>
<td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/Java_version_history" title="Java version history">Java version history</a></li>
<li><a href="/wiki/Java_Community_Process" title="Java Community Process">Java Community Process</a></li>
<li><a href="/wiki/Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></li>
<li><a href="/wiki/Free_Java_implementations" title="Free Java implementations">Free Java implementations</a></li>
</ul>
</div>
</td>
</tr>
<tr style="height:2px;">
<td></td>
</tr>
<tr>
<th scope="row" class="navbox-group">Major programming languages</th>
<td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px;">
<div style="padding:0em 0.25em;">
<ul>
<li><a href="/wiki/BeanShell" title="BeanShell">BeanShell</a></li>
<li><a href="/wiki/Clojure" title="Clojure">Clojure</a></li>
<li><a href="/wiki/Groovy_(programming_language)" title="Groovy (programming language)">Groovy</a></li>
<li><a href="/wiki/Oxygene_(programming_language)" title="Oxygene (programming language)">Oxygene</a></li>
<li><a href="/wiki/Java_Tcl" title="Java Tcl" class="mw-redirect">Java Tcl</a></li>