CINXE.COM
Java - Wikibooks, biblioteka wolnych podręczników
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available" lang="pl" dir="ltr"> <head> <meta charset="UTF-8"> <title>Java - Wikibooks, biblioteka wolnych podręczników</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )plwikibooksmwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t."," \t,"],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"wgRequestId":"590dc27e-b474-4b3c-aed9-7b91d1c2b6cf","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Java","wgTitle":"Java","wgCurRevisionId":488045,"wgRevisionId":488045,"wgArticleId":1829,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Wszystkie książki","Książki na ukończeniu","Spis alfabetyczny/J","Programowanie"],"wgPageViewLanguage":"pl","wgPageContentLanguage":"pl","wgPageContentModel":"wikitext","wgRelevantPageName":"Java","wgRelevantArticleId":1829,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikibooks","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault": true,"wgVisualEditor":{"pageLanguageCode":"pl","pageLanguageDir":"ltr","pageVariantFallbacks":"pl"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":40000,"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q251","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready", "ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.pathway","ext.gadget.StronaSubst","ext.gadget.edit-first-section","ext.gadget.featured-articles-links","ext.gadget.map-toggler","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=pl&modules=ext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=pl&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=pl&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Java - Wikibooks, biblioteka wolnych podręczników"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//pl.m.wikibooks.org/wiki/Java"> <link rel="alternate" type="application/x-wiki" title="Edytuj" href="/w/index.php?title=Java&action=edit"> <link rel="icon" href="/static/favicon/wikibooks.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikibooks (pl)"> <link rel="EditURI" type="application/rsd+xml" href="//pl.wikibooks.org/w/api.php?action=rsd"> <link rel="canonical" href="https://pl.wikibooks.org/wiki/Java"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.pl"> <link rel="alternate" type="application/atom+xml" title="Kanał Atom Wikibooks" href="/w/index.php?title=Specjalna:Ostatnie_zmiany&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Java rootpage-Java skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Przejdź do zawartości</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Witryna"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Menu główne" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Menu główne</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Menu główne</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">przypnij</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">ukryj</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Nawigacja </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna" title="Przejdź na stronę główną [z]" accesskey="z"><span>Strona główna</span></a></li><li id="n-Wikijunior" class="mw-list-item"><a href="/wiki/Wikijunior:Strona_g%C5%82%C3%B3wna"><span>Wikijunior</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Specjalna:Losowa_strona" title="Załaduj losową stronę [x]" accesskey="x"><span>Losowa strona</span></a></li><li id="n-Nowe-strony" class="mw-list-item"><a href="/wiki/Specjalna:Nowe_strony"><span>Nowe strony</span></a></li><li id="n-Podręczniki-miesiąca" class="mw-list-item"><a href="/wiki/Kategoria:Nowe_podr%C4%99czniki_miesi%C4%85ca"><span>Podręczniki miesiąca</span></a></li><li id="n-Wyróżnione-pozycje" class="mw-list-item"><a href="/wiki/Kategoria:Wyr%C3%B3%C5%BCnienia_ksi%C4%85%C5%BCek_miesi%C4%85ca"><span>Wyróżnione pozycje</span></a></li><li id="n-Częste-pytania-(FAQ)" class="mw-list-item"><a href="/wiki/Wikibooks:Szybka_pomoc"><span>Częste pytania (FAQ)</span></a></li> </ul> </div> </div> <div id="p-książki" class="vector-menu mw-portlet mw-portlet-książki" > <div class="vector-menu-heading"> Biblioteka </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-Księgozbiór" class="mw-list-item"><a href="/wiki/Wikibooks:Ksi%C4%99gozbi%C3%B3r"><span>Księgozbiór</span></a></li><li id="n-Podręczniki-dla-dzieci" class="mw-list-item"><a href="/wiki/Kategoria:Wikijunior"><span>Podręczniki dla dzieci</span></a></li><li id="n-Tematy-pozycji" class="mw-list-item"><a href="/wiki/Kategoria:Podr%C4%99czniki_wed%C5%82ug_tematu"><span>Tematy pozycji</span></a></li><li id="n-Spis-alfabetyczny" class="mw-list-item"><a href="/wiki/Kategoria:Spis_alfabetyczny"><span>Spis alfabetyczny</span></a></li><li id="n-Lista-książek" class="mw-list-item"><a href="/wiki/Kategoria:Wszystkie_ksi%C4%85%C5%BCki"><span>Lista książek</span></a></li><li id="n-Polecane-książki" class="mw-list-item"><a href="/wiki/Kategoria:Polecane_ksi%C4%85%C5%BCki"><span>Polecane książki</span></a></li><li id="n-Mechanizm-MediaWiki" class="mw-list-item"><a href="/wiki/Wikibooks:Mechanizm_MediaWiki"><span>Mechanizm MediaWiki</span></a></li><li id="n-Książka-kucharska" class="mw-list-item"><a href="/wiki/Ksi%C4%85%C5%BCka_kucharska"><span>Książka kucharska</span></a></li> </ul> </div> </div> <div id="p-projekt" class="vector-menu mw-portlet mw-portlet-projekt" > <div class="vector-menu-heading"> Dla czytelników </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-O-Wikibooks" class="mw-list-item"><a href="/wiki/Wikibooks:Czym_jest_Wikibooks"><span>O Wikibooks</span></a></li><li id="n-Wikietykieta" class="mw-list-item"><a href="/wiki/Wikibooks:Wikietykieta"><span>Wikietykieta</span></a></li><li id="n-Informacje-prawne" class="mw-list-item"><a href="/wiki/Wikibooks:Informacje_prawne"><span>Informacje prawne</span></a></li><li id="n-Prawa-autorskie" class="mw-list-item"><a href="/wiki/Wikibooks:Prawa_autorskie"><span>Prawa autorskie</span></a></li><li id="n-Kawiarenka" class="mw-list-item"><a href="/wiki/Wikibooks:Bar"><span>Kawiarenka</span></a></li><li id="n-Kontakt" class="mw-list-item"><a href="/wiki/Wikibooks:Kontakt"><span>Kontakt</span></a></li> </ul> </div> </div> <div id="p-błędy" class="vector-menu mw-portlet mw-portlet-błędy" > <div class="vector-menu-heading"> Zgłoszenia </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-Poczekalnia" class="mw-list-item"><a href="/wiki/Wikibooks:Poczekalnia"><span>Poczekalnia</span></a></li><li id="n-Zgłoś-błąd" class="mw-list-item"><a href="/wiki/Wikibooks:Zg%C5%82o%C5%9B_b%C5%82%C4%85d_(ZB)"><span>Zgłoś błąd</span></a></li><li id="n-Lista-NPA" class="mw-list-item"><a href="/wiki/Wikibooks:Lista_Narusze%C5%84_Praw_Autorskich_(NPA)"><span>Lista NPA</span></a></li><li id="n-Usuwanie-stron" class="mw-list-item"><a href="/wiki/Kategoria:Ekspresowe_kasowanie"><span>Usuwanie stron</span></a></li> </ul> </div> </div> <div id="p-edytorzy" class="vector-menu mw-portlet mw-portlet-edytorzy" > <div class="vector-menu-heading"> Dla wikipedystów </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-Portal-użytkowników" class="mw-list-item"><a href="/wiki/Wikibooks:Portal_u%C5%BCytkownik%C3%B3w"><span>Portal użytkowników</span></a></li><li id="n-Kanał-IRC" class="mw-list-item"><a href="/wiki/Wikibooks:Kana%C5%82_IRC"><span>Kanał IRC</span></a></li><li id="n-Przeglądanie-serwisu" class="mw-list-item"><a href="/wiki/Wikibooks:Jak_przegl%C4%85da%C4%87_Wikibooks"><span>Przeglądanie serwisu</span></a></li><li id="n-Ogłoszenia" class="mw-list-item"><a href="/wiki/Wikibooks:Tablica_og%C5%82osze%C5%84"><span>Ogłoszenia</span></a></li><li id="n-Zasady-i-wskazówki" class="mw-list-item"><a href="/wiki/Wikibooks:Zasady_i_wskaz%C3%B3wki"><span>Zasady i wskazówki</span></a></li><li id="n-Pomoc" class="mw-list-item"><a href="/wiki/Pomoc:Spis_tre%C5%9Bci"><span>Pomoc</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Specjalna:Ostatnie_zmiany" title="Lista ostatnich zmian w Wikibooks. [r]" accesskey="r"><span>Ostatnie zmiany</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikibooks.svg" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikibooks" src="/static/images/mobile/copyright/wikibooks-wordmark-vi.svg" style="width: 7.5em; height: 0.9375em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Specjalna:Szukaj" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Przeszukaj Wikibooks [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Szukaj</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Przeszukaj Wikibooks" aria-label="Przeszukaj Wikibooks" autocapitalize="sentences" title="Przeszukaj Wikibooks [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Specjalna:Szukaj"> </div> <button class="cdx-button cdx-search-input__end-button">Szukaj</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Narzędzia osobiste"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Wygląd"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Zmień rozmiar czcionki, szerokość oraz kolorystykę strony" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Wygląd" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Wygląd</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_pl.wikibooks.org&uselang=pl" class=""><span>Przekaż darowiznę</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Specjalna:Utw%C3%B3rz_konto&returnto=Java" title="Zachęcamy do stworzenia konta i zalogowania, ale nie jest to obowiązkowe." class=""><span>Utwórz konto</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Specjalna:Zaloguj&returnto=Java" title="Zachęcamy do zalogowania się, choć nie jest to obowiązkowe. [o]" accesskey="o" class=""><span>Zaloguj się</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Więcej opcji" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Narzędzia osobiste" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Narzędzia osobiste</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Menu użytkownika" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_pl.wikibooks.org&uselang=pl"><span>Przekaż darowiznę</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Specjalna:Utw%C3%B3rz_konto&returnto=Java" title="Zachęcamy do stworzenia konta i zalogowania, ale nie jest to obowiązkowe."><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Utwórz konto</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Specjalna:Zaloguj&returnto=Java" title="Zachęcamy do zalogowania się, choć nie jest to obowiązkowe. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Zaloguj się</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Strony dla anonimowych edytorów <a href="/wiki/Pomoc:Pierwsze_kroki" aria-label="Dowiedz się więcej na temat edytowania"><span>dowiedz się więcej</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Specjalna:M%C3%B3j_wk%C5%82ad" title="Lista edycji wykonanych z tego adresu IP [y]" accesskey="y"><span>Edycje</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Specjalna:Moja_dyskusja" title="Dyskusja użytkownika dla tego adresu IP [n]" accesskey="n"><span>Dyskusja</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Witryna"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Spis treści" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Spis treści</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">przypnij</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">ukryj</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Początek</div> </a> </li> <li id="toc-Cechy_Javy_przemawiające_za_jej_wyborem" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Cechy_Javy_przemawiające_za_jej_wyborem"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Cechy Javy przemawiające za jej wyborem</span> </div> </a> <ul id="toc-Cechy_Javy_przemawiające_za_jej_wyborem-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Wady,_o_których_warto_pamiętać" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Wady,_o_których_warto_pamiętać"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Wady, o których warto pamiętać</span> </div> </a> <ul id="toc-Wady,_o_których_warto_pamiętać-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Czego_potrzebujesz,_żeby_zacząć" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Czego_potrzebujesz,_żeby_zacząć"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Czego potrzebujesz, żeby zacząć</span> </div> </a> <button aria-controls="toc-Czego_potrzebujesz,_żeby_zacząć-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Przełącz podsekcję Czego potrzebujesz, żeby zacząć</span> </button> <ul id="toc-Czego_potrzebujesz,_żeby_zacząć-sublist" class="vector-toc-list"> <li id="toc-Windows" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Windows"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Windows</span> </div> </a> <ul id="toc-Windows-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Linux" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Linux"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Linux</span> </div> </a> <ul id="toc-Linux-sublist" class="vector-toc-list"> <li id="toc-Debian/Ubuntu" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Debian/Ubuntu"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2.1</span> <span>Debian/Ubuntu</span> </div> </a> <ul id="toc-Debian/Ubuntu-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Arch_Linux" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Arch_Linux"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2.2</span> <span>Arch Linux</span> </div> </a> <ul id="toc-Arch_Linux-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Java_z_punktu_widzenia_programisty" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Java_z_punktu_widzenia_programisty"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Java z punktu widzenia programisty</span> </div> </a> <button aria-controls="toc-Java_z_punktu_widzenia_programisty-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Przełącz podsekcję Java z punktu widzenia programisty</span> </button> <ul id="toc-Java_z_punktu_widzenia_programisty-sublist" class="vector-toc-list"> <li id="toc-Środowisko_uruchomieniowe_i_developerskie" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Środowisko_uruchomieniowe_i_developerskie"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Środowisko uruchomieniowe i developerskie</span> </div> </a> <ul id="toc-Środowisko_uruchomieniowe_i_developerskie-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Kod_wykonywalny_programu" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Kod_wykonywalny_programu"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Kod wykonywalny programu</span> </div> </a> <ul id="toc-Kod_wykonywalny_programu-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Zwalnianie_pamięci_w_języku_Java_-_Garbage_Collector" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Zwalnianie_pamięci_w_języku_Java_-_Garbage_Collector"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Zwalnianie pamięci w języku Java - Garbage Collector</span> </div> </a> <ul id="toc-Zwalnianie_pamięci_w_języku_Java_-_Garbage_Collector-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Notka_dla_programistów_C++" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Notka_dla_programistów_C++"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.4</span> <span>Notka dla programistów C++</span> </div> </a> <ul id="toc-Notka_dla_programistów_C++-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Nauka_programowania_w_języku_Java" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Nauka_programowania_w_języku_Java"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Nauka programowania w języku Java</span> </div> </a> <ul id="toc-Nauka_programowania_w_języku_Java-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Komunikacja_z_użytkownikiem" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Komunikacja_z_użytkownikiem"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Komunikacja z użytkownikiem</span> </div> </a> <ul id="toc-Komunikacja_z_użytkownikiem-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Kurs_podstawowy" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Kurs_podstawowy"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Kurs podstawowy</span> </div> </a> <button aria-controls="toc-Kurs_podstawowy-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Przełącz podsekcję Kurs podstawowy</span> </button> <ul id="toc-Kurs_podstawowy-sublist" class="vector-toc-list"> <li id="toc-Jak_kompilować_/_uruchamiać_programy" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Jak_kompilować_/_uruchamiać_programy"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.1</span> <span>Jak kompilować / uruchamiać programy</span> </div> </a> <ul id="toc-Jak_kompilować_/_uruchamiać_programy-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Struktura_podstawowego_programu" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Struktura_podstawowego_programu"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.2</span> <span>Struktura podstawowego programu</span> </div> </a> <ul id="toc-Struktura_podstawowego_programu-sublist" class="vector-toc-list"> <li id="toc-Struktura_programu_dla_zaawansowanych" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Struktura_programu_dla_zaawansowanych"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.2.1</span> <span>Struktura programu dla zaawansowanych</span> </div> </a> <ul id="toc-Struktura_programu_dla_zaawansowanych-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Zmienne" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Zmienne"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.3</span> <span>Zmienne</span> </div> </a> <ul id="toc-Zmienne-sublist" class="vector-toc-list"> <li id="toc-Typy_zmiennych" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Typy_zmiennych"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.3.1</span> <span>Typy zmiennych</span> </div> </a> <ul id="toc-Typy_zmiennych-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Pierwszy_program" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Pierwszy_program"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Pierwszy program</span> </div> </a> <button aria-controls="toc-Pierwszy_program-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Przełącz podsekcję Pierwszy program</span> </button> <ul id="toc-Pierwszy_program-sublist" class="vector-toc-list"> <li id="toc-Obiektowe_podstawy" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Obiektowe_podstawy"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.1</span> <span>Obiektowe podstawy</span> </div> </a> <ul id="toc-Obiektowe_podstawy-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Przykład_1" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Przykład_1"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.2</span> <span>Przykład 1</span> </div> </a> <ul id="toc-Przykład_1-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Przykład_2" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Przykład_2"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.3</span> <span>Przykład 2</span> </div> </a> <ul id="toc-Przykład_2-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Przykład_3" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Przykład_3"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.4</span> <span>Przykład 3</span> </div> </a> <ul id="toc-Przykład_3-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Przykład_4" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Przykład_4"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.5</span> <span>Przykład 4</span> </div> </a> <ul id="toc-Przykład_4-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Przykład_5_-_prosta_grafika" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Przykład_5_-_prosta_grafika"> <div class="vector-toc-text"> <span class="vector-toc-numb">8.6</span> <span>Przykład 5 - prosta grafika</span> </div> </a> <ul id="toc-Przykład_5_-_prosta_grafika-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Narzędzia" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Narzędzia"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Narzędzia</span> </div> </a> <button aria-controls="toc-Narzędzia-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Przełącz podsekcję Narzędzia</span> </button> <ul id="toc-Narzędzia-sublist" class="vector-toc-list"> <li id="toc-Edytory" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Edytory"> <div class="vector-toc-text"> <span class="vector-toc-numb">9.1</span> <span>Edytory</span> </div> </a> <ul id="toc-Edytory-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-IDE" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#IDE"> <div class="vector-toc-text"> <span class="vector-toc-numb">9.2</span> <span>IDE</span> </div> </a> <ul id="toc-IDE-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Co_wybrać?" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Co_wybrać?"> <div class="vector-toc-text"> <span class="vector-toc-numb">9.3</span> <span>Co wybrać?</span> </div> </a> <ul id="toc-Co_wybrać?-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Bibliografia" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Bibliografia"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Bibliografia</span> </div> </a> <ul id="toc-Bibliografia-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Warto_przeczytać" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Warto_przeczytać"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>Warto przeczytać</span> </div> </a> <ul id="toc-Warto_przeczytać-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Linki_zewnętrzne" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Linki_zewnętrzne"> <div class="vector-toc-text"> <span class="vector-toc-numb">12</span> <span>Linki zewnętrzne</span> </div> </a> <ul id="toc-Linki_zewnętrzne-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Spis treści" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Przełącz stan spisu treści" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Przełącz stan spisu treści</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Java</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Przejdź do artykułu w innym języku. Treść dostępna w 27 językach" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-27" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">27 języków</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikibooks.org/wiki/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9_%D8%AC%D8%A7%D9%81%D8%A7" title="برمجة جافا – arabski" lang="ar" hreflang="ar" data-title="برمجة جافا" data-language-autonym="العربية" data-language-local-name="arabski" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikibooks.org/wiki/Java" title="Java – azerbejdżański" lang="az" hreflang="az" data-title="Java" data-language-autonym="Azərbaycanca" data-language-local-name="azerbejdżański" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikibooks.org/wiki/%E0%A6%9C%E0%A6%BE%E0%A6%AD%E0%A6%BE_%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A7%8B%E0%A6%97%E0%A7%8D%E0%A6%B0%E0%A6%BE%E0%A6%AE%E0%A6%BF%E0%A6%82" title="জাভা প্রোগ্রামিং – bengalski" lang="bn" hreflang="bn" data-title="জাভা প্রোগ্রামিং" data-language-autonym="বাংলা" data-language-local-name="bengalski" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikibooks.org/wiki/Java" title="Java – czeski" lang="cs" hreflang="cs" data-title="Java" data-language-autonym="Čeština" data-language-local-name="czeski" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikibooks.org/wiki/Java" title="Java – duński" lang="da" hreflang="da" data-title="Java" data-language-autonym="Dansk" data-language-local-name="duński" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikibooks.org/wiki/Java_Standard" title="Java Standard – niemiecki" lang="de" hreflang="de" data-title="Java Standard" data-language-autonym="Deutsch" data-language-local-name="niemiecki" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikibooks.org/wiki/Java_Programming" title="Java Programming – angielski" lang="en" hreflang="en" data-title="Java Programming" data-language-autonym="English" data-language-local-name="angielski" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java" title="Programación en Java – hiszpański" lang="es" hreflang="es" data-title="Programación en Java" data-language-autonym="Español" data-language-local-name="hiszpański" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikibooks.org/wiki/Java" title="Java – fiński" lang="fi" hreflang="fi" data-title="Java" data-language-autonym="Suomi" data-language-local-name="fiński" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-fr badge-Q17437796 badge-featuredarticle mw-list-item" title="medal"><a href="https://fr.wikibooks.org/wiki/Programmation_Java" title="Programmation Java – francuski" lang="fr" hreflang="fr" data-title="Programmation Java" data-language-autonym="Français" data-language-local-name="francuski" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikibooks.org/wiki/Java" title="Java – hebrajski" lang="he" hreflang="he" data-title="Java" data-language-autonym="עברית" data-language-local-name="hebrajski" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikibooks.org/wiki/Java_programoz%C3%A1s" title="Java programozás – węgierski" lang="hu" hreflang="hu" data-title="Java programozás" data-language-autonym="Magyar" data-language-local-name="węgierski" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-is mw-list-item"><a href="https://is.wikibooks.org/wiki/Java" title="Java – islandzki" lang="is" hreflang="is" data-title="Java" data-language-autonym="Íslenska" data-language-local-name="islandzki" class="interlanguage-link-target"><span>Íslenska</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikibooks.org/wiki/Java" title="Java – włoski" lang="it" hreflang="it" data-title="Java" data-language-autonym="Italiano" data-language-local-name="włoski" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikibooks.org/wiki/Java" title="Java – japoński" lang="ja" hreflang="ja" data-title="Java" data-language-autonym="日本語" data-language-local-name="japoński" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-ka mw-list-item"><a href="https://ka.wikibooks.org/wiki/Java" title="Java – gruziński" lang="ka" hreflang="ka" data-title="Java" data-language-autonym="ქართული" data-language-local-name="gruziński" class="interlanguage-link-target"><span>ქართული</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikibooks.org/wiki/%E0%B4%9C%E0%B4%BE%E0%B4%B5_%E0%B4%AA%E0%B5%8D%E0%B4%B0%E0%B5%8B%E0%B4%97%E0%B5%8D%E0%B4%B0%E0%B4%BE%E0%B4%AE%E0%B4%BF%E0%B4%99%E0%B5%8D%E0%B4%99%E0%B5%8D" title="ജാവ പ്രോഗ്രാമിങ്ങ് – malajalam" lang="ml" hreflang="ml" data-title="ജാവ പ്രോഗ്രാമിങ്ങ്" data-language-autonym="മലയാളം" data-language-local-name="malajalam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikibooks.org/wiki/Programmeren_in_Java" title="Programmeren in Java – niderlandzki" lang="nl" hreflang="nl" data-title="Programmeren in Java" data-language-autonym="Nederlands" data-language-local-name="niderlandzki" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikibooks.org/wiki/Java" title="Java – norweski" lang="no" hreflang="no" data-title="Java" data-language-autonym="Norsk" data-language-local-name="norweski" class="interlanguage-link-target"><span>Norsk</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikibooks.org/wiki/Java" title="Java – portugalski" lang="pt" hreflang="pt" data-title="Java" data-language-autonym="Português" data-language-local-name="portugalski" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikibooks.org/wiki/Java" title="Java – rosyjski" lang="ru" hreflang="ru" data-title="Java" data-language-autonym="Русский" data-language-local-name="rosyjski" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikibooks.org/wiki/Java" title="Java – albański" lang="sq" hreflang="sq" data-title="Java" data-language-autonym="Shqip" data-language-local-name="albański" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikibooks.org/wiki/%E0%AE%9C%E0%AE%BE%E0%AE%B5%E0%AE%BE" title="ஜாவா – tamilski" lang="ta" hreflang="ta" data-title="ஜாவா" data-language-autonym="தமிழ்" data-language-local-name="tamilski" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikibooks.org/wiki/%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B8%88%E0%B8%B2%E0%B8%A7%E0%B8%B2" title="ภาษาจาวา – tajski" lang="th" hreflang="th" data-title="ภาษาจาวา" data-language-autonym="ไทย" data-language-local-name="tajski" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikibooks.org/wiki/Java" title="Java – turecki" lang="tr" hreflang="tr" data-title="Java" data-language-autonym="Türkçe" data-language-local-name="turecki" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikibooks.org/wiki/%D0%9E%D1%81%D0%B2%D0%BE%D1%8E%D1%94%D0%BC%D0%BE_Java" title="Освоюємо Java – ukraiński" lang="uk" hreflang="uk" data-title="Освоюємо Java" data-language-autonym="Українська" data-language-local-name="ukraiński" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikibooks.org/wiki/Java" title="Java – chiński" lang="zh" hreflang="zh" data-title="Java" data-language-autonym="中文" data-language-local-name="chiński" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q251#sitelinks-wikibooks" title="Edytuj linki pomiędzy wersjami językowymi" class="wbc-editpage">Edytuj linki</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Przestrzenie nazw"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Java" title="Zobacz stronę treści [c]" accesskey="c"><span>Podręcznik</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Dyskusja:Java" rel="discussion" title="Dyskusja o zawartości tej strony [t]" accesskey="t"><span>Dyskusja</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Zmień wariant języka" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">polski</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Widok"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Java"><span>Czytaj</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Java&action=edit" title="Edytuj tę stronę [e]" accesskey="e"><span>Edytuj</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Java&action=history" title="Starsze wersje tej strony [h]" accesskey="h"><span>Pokaż historię</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Narzędzia dla stron"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Narzędzia" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Narzędzia</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Narzędzia</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">przypnij</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">ukryj</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Więcej opcji" > <div class="vector-menu-heading"> Działania </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Java"><span>Czytaj</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Java&action=edit" title="Edytuj tę stronę [e]" accesskey="e"><span>Edytuj</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Java&action=history"><span>Pokaż historię</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Ogólne </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Specjalna:Linkuj%C4%85ce/Java" title="Pokaż listę wszystkich stron linkujących do tej strony [j]" accesskey="j"><span>Linkujące</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Specjalna:Zmiany_w_linkowanych/Java" rel="nofollow" title="Ostatnie zmiany w stronach, do których ta strona linkuje [k]" accesskey="k"><span>Zmiany w linkowanych</span></a></li><li id="t-upload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard?uselang=pl" title="Prześlij pliki [u]" accesskey="u"><span>Prześlij plik</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Specjalna:Strony_specjalne" title="Lista wszystkich stron specjalnych [q]" accesskey="q"><span>Strony specjalne</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Java&oldid=488045" title="Stały link do tej wersji tej strony"><span>Link do tej wersji</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Java&action=info" title="Więcej informacji na temat tej strony"><span>Informacje o tej stronie</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Specjalna:Cytuj&page=Java&id=488045&wpFormIdentifier=titleform" title="Informacja o tym jak należy cytować tę stronę"><span>Cytowanie tego artykułu</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Specjalna:Skr%C3%B3%C4%87_adres_URL&url=https%3A%2F%2Fpl.wikibooks.org%2Fwiki%2FJava"><span>Zobacz skrócony adres URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Specjalna:Kod_QR&url=https%3A%2F%2Fpl.wikibooks.org%2Fwiki%2FJava"><span>Pobierz kod QR</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Drukuj lub eksportuj </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Specjalna:Ksi%C4%85%C5%BCka&bookcmd=book_creator&referer=Java"><span>Utwórz książkę</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Specjalna:DownloadAsPdf&page=Java&action=show-download-screen"><span>Pobierz jako PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Java&printable=yes" title="Wersja do wydruku [p]" accesskey="p"><span>Wersja do druku</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> W innych projektach </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:Java_(programming_language)" hreflang="en"><span>Wikimedia Commons</span></a></li><li class="wb-otherproject-link wb-otherproject-wikipedia mw-list-item"><a href="https://pl.wikipedia.org/wiki/Java" hreflang="pl"><span>Wikipedia</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q251" title="Link do powiązanego elementu w repozytorium danych [g]" accesskey="g"><span>Element Wikidanych</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Narzędzia dla stron"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Wygląd"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Wygląd</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">przypnij</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">ukryj</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> <div id="mw-indicator-indicator_status_skrot" class="mw-indicator"><div class="mw-parser-output"><span typeof="mw:File"><a href="/wiki/Kategoria:Ksi%C4%85%C5%BCki_na_uko%C5%84czeniu" title="75% Status"><img alt="75% Status" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/49/75%25.svg/24px-75%25.svg.png" decoding="async" width="24" height="24" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/49/75%25.svg/36px-75%25.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/49/75%25.svg/48px-75%25.svg.png 2x" data-file-width="9" data-file-height="9" /></a></span></div></div> </div> <div id="siteSub" class="noprint">Z Wikibooks, biblioteki wolnych podręczników.</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="pl" dir="ltr"><div align="justify"><style data-mw-deduplicate="TemplateStyles:r487305">.mw-parser-output div.div-linia{display:block;position:static;width:0;height:0;font-size:0;line-height:0}</style><div class="div-linia"></div> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Cechy_Javy_przemawiające_za_jej_wyborem"><span id="Cechy_Javy_przemawiaj.C4.85ce_za_jej_wyborem"></span>Cechy Javy przemawiające za jej wyborem</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=1" title="Edytuj sekcję: Cechy Javy przemawiające za jej wyborem"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Przenośność - możesz uruchomić program na każdym systemie i sprzęcie, na którym istnieje implementacja wirtualnej maszyny Java.</li></ul> <ul><li>Wygoda - podstawowe klasy i mechanizmy Java są zaimplementowane tak, że dostarczają programiście wygodnych w użyciu bibliotek, która w wielu przypadkach znacznie przyśpieszają tworzenie aplikacji.</li></ul> <ul><li>Szybkość tworzenia aplikacji - w Java aplikacje pisze się szybciej niż w niektórych innych językach programowania. Wszystko dzięki użytecznym klasom i mądrze zaplanowanym bibliotekom, narzędziom oraz IDE.</li></ul> <ul><li>Duże wsparcie ze strony twórców środowisk programowania - dzięki środowiskom IDE, takim jak NetBeans czy Eclipse, programy możesz tworzyć jeszcze szybciej i jeszcze wydajniej używając profesjonalnych narzędzi, które ułatwią tworzenie dużych aplikacji i panowanie nad tworzeniem oraz utrzymywaniem kodu.</li></ul> <ul><li>Ciekawe możliwości tworzenia interfejsu użytkownika - możliwość dostępu do wygodnych w użyciu bibliotek i narzędzi pozwalających szybko i bezboleśnie stworzyć niezależny od systemu i przenośny interfejs graficzny dla aplikacji. Biblioteki graficzne udostępniają metody, które są dokładnie tym, czego potrzebujesz.</li></ul> <ul><li>Duża ilość publikacji - w sieci jest sporo informacji na temat języka Java. Jest to ogromna zaleta szczególnie dla osób uczących się tego języka. W Internecie znaleźć można sporo przykładowego kodu, artykułów czy tutoriali.</li></ul> <ul><li>Garbage collection, czyli automatyczne zwalnianie nieużywanych już obszarów pamięci</li></ul> <div class="mw-heading mw-heading2"><h2 id="Wady,_o_których_warto_pamiętać"><span id="Wady.2C_o_kt.C3.B3rych_warto_pami.C4.99ta.C4.87"></span>Wady, o których warto pamiętać</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=2" title="Edytuj sekcję: Wady, o których warto pamiętać"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Przeważnie programy uruchamiane pod maszyną wirtualną działają wolniej niż programy napisane w C++ (szczególnie czasochłonne jest uruchamianie aplikacji).</li></ul> <ul><li>Użytkownik potrzebuje zainstalowanej maszyny wirtualnej javy (JVM), aby móc uruchomić nasz program.</li></ul> <ul><li>Java ustępuje innym językom programowania (np. C++ lub Ada) w tworzeniu aplikacji czasu rzeczywistego.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Czego_potrzebujesz,_żeby_zacząć"><span id="Czego_potrzebujesz.2C_.C5.BCeby_zacz.C4.85.C4.87"></span>Czego potrzebujesz, żeby zacząć</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=3" title="Edytuj sekcję: Czego potrzebujesz, żeby zacząć"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r478249">.mw-parser-output .infobox{border:1px solid #a2a9b1;background-color:#f8f8f8;border-collapse:collapse;color:black;font-size:90%;text-align:left;margin:0 0 0.4em 1.4em;border-spacing:0;float:right;clear:right;width:250px}.mw-parser-output .ambox+.infobox{margin-top:0.6em}.mw-parser-output .infobox td,.mw-parser-output .infobox th{vertical-align:top;padding:4px}.mw-parser-output .infobox td>.nopadding td{padding:0px}.mw-parser-output .infobox caption{font-size:larger;margin-left:inherit}.mw-parser-output .infobox.bordered{border-collapse:collapse}.mw-parser-output .infobox.bordered td,.mw-parser-output .infobox.bordered th{border:1px solid #a2a9b1}.mw-parser-output .infobox.bordered .borderless td,.mw-parser-output .infobox.bordered .borderless th{border:0}.mw-parser-output .infobox.sisterproject{width:20em;font-size:90%}.mw-parser-output .infobox td>p{margin:0}.mw-parser-output .infobox.bordered .mergedtoprow td,.mw-parser-output .infobox.bordered .mergedtoprow th{border:0;border-top:1px solid #a2a9b1;border-right:1px solid #a2a9b1}.mw-parser-output .infobox.bordered .mergedrow td,.mw-parser-output .infobox.bordered .mergedrow th{border:0;border-right:1px solid #a2a9b1}.mw-parser-output .infobox ul,.mw-parser-output ol{margin-top:0px}.mw-parser-output .infobox>tbody>tr>td[colspan]:first-child>.collapsible{width:100%;margin:0;background-color:transparent;font-size:100%;border-spacing:0;border-collapse:collapse}.mw-parser-output .infobox>caption{border-width:1px;border-color:#a2a9b1;border-top-style:solid;border-left-style:solid;border-right-style:solid;border-bottom-style:none;border-collapse:collapse;color:black;border-spacing:0;text-align:center;margin:0;background:#ccc;padding:4px;caption-side:top;font-size:larger;font-weight:bold}.mw-parser-output .infobox .wdq-items>th,.mw-parser-output .infobox>tbody>tr:not([style])>th:not([colspan]):not([style]){text-align:left;font-weight:normal;background-color:#eee;color:#111}.mw-parser-output .infobox>tbody>tr:not([style])>th[colspan]{border:1px solid #a2a9b1;text-align:center;font-weight:bold}.mw-parser-output .infobox>tbody>tr:not([style])>th[colspan]:not([style]){background-color:#ddd;color:black}.mw-parser-output .infobox>tbody>tr.iboxsisterlink:not([style]){border:1px solid #a2a9b1;background-color:white;text-align:center}.mw-parser-output .infobox>tbody>tr.iboxsisterlink>td>img:first-child{float:left;margin-right:0.5em}.mw-parser-output .infobox>tbody>.iboxs{border-top:1px solid #a2a9b1}.mw-parser-output .infobox .grafika{background-color:white;text-align:center;vertical-align:middle}.mw-parser-output .infobox>tbody>tr>td>table.ibox2{border-spacing:0;border-collapse:collapse;width:100%}.mw-parser-output .infobox>tbody>tr>td>table.ibox2>tbody>tr>td,.mw-parser-output .infobox>tbody>tr>td>table.ibox2>tbody>tr>th{width:50%;text-align:center;vertical-align:middle}</style> <table class="infobox noprint plainlinks" cellpadding="4"> <tbody><tr> <td style="vertical-align:middle; text-align:center; width:30px;"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/8/80/Wikipedia-logo-v2.svg/28px-Wikipedia-logo-v2.svg.png" decoding="async" width="28" height="26" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/80/Wikipedia-logo-v2.svg/42px-Wikipedia-logo-v2.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/80/Wikipedia-logo-v2.svg/56px-Wikipedia-logo-v2.svg.png 2x" data-file-width="103" data-file-height="94" /></span></span> </td> <td style="line-height:normal; vertical-align:middle; text-align:center;"><a href="https://pl.wikipedia.org/wiki/Wikipedia" class="extiw" title="w:Wikipedia">Wikipedia</a>, nasz siostrzany projekt, zawiera artykuł na temat <b><a href="https://pl.wikipedia.org/wiki/Java" class="extiw" title="w:Java">Java</a></b>. </td></tr></tbody></table> <p>Java to nie tylko język programowania - to również środowisko uruchomieniowe, w którym działają programy, tak zwana Wirtualna Maszyna Java (<i>Java Virtual Machine</i> - JVM). Java jest zaliczana do języków kompilowano-interpretowanych - aby napisane przez nas programy zadziałały, wymagany jest kompilator, który przekształci kod źródłowy do tzw. <i>byte code</i>, czyli odpowiednika kodu maszynowego rozumianego przez JVM (w tej książce funkcjonuje również termin <i>kod bajtowy</i>). Zarówno JVM jak i kompilator są dostarczane za darmo przez twórców Javy - firmę <a rel="nofollow" class="external text" href="http://java.sun.com/">Oracle</a>. Najlepiej ściągnąć wszystko w jednym pakiecie, który obecnie nosi nazwę <b>Java SE</b> (Java Platform, Standard Edition). Java SE jest dostępna na wiele platform, w tym dla systemów 32- i 64-bitowych Windows i GNU/Linux. Jest to wszystko, czego potrzebujemy do rozpoczęcia pracy. </p><p><br /> </p> <div class="mw-heading mw-heading3"><h3 id="Windows">Windows</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=4" title="Edytuj sekcję: Windows"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>W przypadku Windowsa można użyć implementację stworzoną przez Oracle. Można ją pobrać z <a rel="nofollow" class="external text" href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html">ich oficjalnej strony internetowej.</a> Wybieramy odpowiedni pakiet i wybieramy akceptujemy licencję Oracle. Następnie szukamy linków dla Windowsa 32 i 64 bitowego. Po pobraniu uruchamiamy instalator. </p> Kontynuując wybieramy, czy chcemy zainstalować dodatkowo kod źródłowy podstawowych bibliotek i COŚ TAM.<div align="justify"> <div class="mw-heading mw-heading3"><h3 id="Linux">Linux</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=5" title="Edytuj sekcję: Linux"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Istnieje kilka implementacji Javy.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> My wybierzemy otwartą implementację OpenJDK<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>. </p> <div class="mw-heading mw-heading4"><h4 id="Debian/Ubuntu"><span id="Debian.2FUbuntu"></span>Debian/Ubuntu</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=6" title="Edytuj sekcję: Debian/Ubuntu"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>W konsoli wpisujemy: </p> <pre>$ sudo apt-get install openjdk-6-jdk openjdk-6-jre openjdk-6-doc </pre> <p><br /> potem sprawdzamy: </p> <pre>java -version </pre> <p>Przykładowy wynik: </p> <pre> openjdk version "1.8.0_131" OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11) OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode) </pre> <div class="mw-heading mw-heading4"><h4 id="Arch_Linux">Arch Linux</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=7" title="Edytuj sekcję: Arch Linux"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>W konsoli wpisujemy (jako root): </p> <pre># pacman -S jdk7-openjdk jre7-openjdk </pre> <p>lub jeśli potrzebujemy wersji 6: </p> <pre># pacman -S openjdk6 </pre> <p>Następnie możemy sprawdzić działanie wpisując: </p> <pre>$ javac -version </pre> <div class="mw-heading mw-heading2"><h2 id="Java_z_punktu_widzenia_programisty">Java z punktu widzenia programisty</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=8" title="Edytuj sekcję: Java z punktu widzenia programisty"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Środowisko_uruchomieniowe_i_developerskie"><span id=".C5.9Arodowisko_uruchomieniowe_i_developerskie"></span>Środowisko uruchomieniowe i developerskie</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=9" title="Edytuj sekcję: Środowisko uruchomieniowe i developerskie"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Aby dobrze programować, warto zrozumieć, jak wygląda całe podłoże mechanizmu Java. Pierwszym podstawowym elementem jest JRE (Java Runtime Environment - środowisko uruchomieniowe Javy). JRE jest niezbędne do uruchamiania aplikacji Java na komputerze. A co to oznacza dla nas programistów? Oznacza nie mniej, nie więcej, a dokładnie tyle, że programy pisane w tym języku uruchamiane są nie "w komputerze", ale w pewnym środowisku działającym na komputerze. Dzięki temu jesteśmy pewni, że jeśli powstanie implementacja Wirtualnej Maszyny Java (JRE - w naszym przypadku) na jakąkolwiek maszynę, to będziemy mogli na tej maszynie uruchomić nasz program bez względu na to, czy będzie to: Atari ST, XBOX czy najnowsza wersja tostera marki "dla Ciebie dla Domu". Dzięki temu programy pisane w Javie będą mogły być uruchamiane nawet na sprzęcie, który pojawi się za 10-20 lat, o ile będzie istniała implementacja Wirtualnej Maszyny Java dla tych urządzeń. </p><p>Wykonywanie aplikacji języka Java poprzez JRE rozwijało się w następujących kierunkach: </p> <ul><li>Początkowo program mógł być interpretowany instrukcja po instrukcji (podobnie jak w językach skryptowych) jednak rozwiązanie to było bardzo niewydajne i powodowało, że programy napisane w języku Java działały bardzo wolno.</li></ul> <ul><li>Aby zwiększyć wydajność programów napisanych w języku Java w nowoczesnych maszynach wirtualnych Java, zaimplementowano mechanizmy mające przyśpieszyć działanie programów. Jednym z nich jest technika JIT (Just In Time). Technologia Just In Time kompiluje kod bezpośrednio przed jego wykonaniem. Dzięki temu kompilowane są tylko i wyłącznie funkcje czy klasy, których używamy w naszym programie (a nie cały program). JIT w połączeniu z optymalizacją adaptacyjną pozwala działać programom napisanym w Java niemal tak szybko jak aplikacjom C/C++.</li></ul> <p>Poza JRE (niezbędnym użytkownikowi) istnieje inna popularna forma dystrybucji pakietu Java. JDK (Java Development Kit), zwana również SDK (Software Development Kit). To dystrybucja języka Java dla osób tworzących kod w języku Java. Poza środowiskiem uruchomieniowym zawiera między innymi: kompilator, dokumentację/pomoc i debugger. Poradnik jego instalacji został już opisany w sekcji wyżej. </p> <div class="mw-heading mw-heading3"><h3 id="Kod_wykonywalny_programu">Kod wykonywalny programu</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=10" title="Edytuj sekcję: Kod wykonywalny programu"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Po napisaniu kodu źródłowego program kompilowany jest do bytecodu. Nie jest to jeszcze kod zrozumiały dla procesora w sposób bezpośredni, który pozwalałby nam na jego uruchomienie. Jest to jednak kod zapisany w określonym formacie, który może zostać poprawnie zinterpretowany przez Maszynę Wirtualną Java, przetłumaczony na kod wykonywalny i uruchomiony. </p> <div class="mw-heading mw-heading3"><h3 id="Zwalnianie_pamięci_w_języku_Java_-_Garbage_Collector"><span id="Zwalnianie_pami.C4.99ci_w_j.C4.99zyku_Java_-_Garbage_Collector"></span>Zwalnianie pamięci w języku Java - Garbage Collector</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=11" title="Edytuj sekcję: Zwalnianie pamięci w języku Java - Garbage Collector"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>W języku Java w tle, podczas działania naszego programu, działa mechanizm zwany Garbage Collector (zbieracz śmieci). Ma on na celu zwolnienie programisty z obowiązku dbania o zwalnianie pamięci w programie. Stosuje on szereg algorytmów mających na celu wyłapanie niepotrzebnych obiektów i usunięcie ich. Posiada to swoje wady i zalety. </p><p>Zaletą jest to, że programista nie musi pamiętać o zniszczeniu obiektu lub zwolnieniu pamięci. Mamy wolny czas, który normalnie poświęcilibyśmy na tworzenie destruktorów i czasochłonne myślenie nad tym, czy oby na pewno dobrze alokuję i zwalniam pamięć. Więcej nawet - istnieją problemy w których nie jesteśmy w stanie rozstrzygnąć, czy obiekt powinien zostać "już" zwolniony czy jeszcze powinien pozostać przy życiu. GC zrzuca z nas również ten ciężar. </p><p>Wadą jest to, że działanie Garbage Collectora zajmuje czas. Nigdy nie wiadomo kiedy Garbage Collector postanowi zadziałać i wyszukać oraz zwrócić do systemu nieużywaną już przez program pamięć. Przez to systemy czasu rzeczywistego pisane w Javie obwarowane są dodatkowymi restrykcjami, ponieważ działanie programu może być w każdej chwili wstrzymane na odśmiecanie. </p><p>Najprostsze mechanizmy działania Garbage Collectora to usuwanie obiektów, dla których ilość referencji wynosi zero (z takiego obiektu nie skorzystamy bo nie mamy się do niego jak odwołać, więc nie ma sensu trzymać go w pamięci) i odnajdywanie trójkącików (referencja A wskazuje na B, B wskazuje na C ale C znowu wskazuje na A), ale istnieją również bardziej złożone. </p><p><b>Ciekawostki</b> </p><p>Istnieją właściwie dwa GC. Jeden uruchamiany jest często i zwalnia zmienne które nie są już potrzebne, a które zostały utworzone "niedawno". Np. użyte zmienne lokalne po opuszczeniu metody która ich używała. Drugi jest uruchamiany rzadziej, ale czyści dokładniej całą pamięć, jednak jego działanie może powodować zatrzymanie JVM do czasu zakończenia procesu odśmiecania (istnieją jednak implementacje JVM które nie posiadają tej wady). Powinieneś wiedzieć, że GC w "zasadzie działa", ale dla aplikacji bardzo intensywnie używających pamięć może zdarzyć się sytuacja, że GC nie zdąży z odśmieceniem nim nastąpi przepełnienie pamięci - w takim przypadku zostanie zrzucony wyjątek OutOfMemoryError i aplikacja w zasadzie przestanie działać. W takich programach warto używać przypisania do "null" - pomoże to GC łatwiej odnajdywać obiekty do usunięcia. Można również ręcznie zainicjować działanie GC poprzez użycie System.gc() - nie gwarantuje to, że wszystkie śmieci zostaną zwolnione, ale często może pomóc. Wgłębiając się w różne aspekty pamięci używanej przez JVM odnajdziesz obszar PermGen. Obszar PermGen nie jest odśmiecany (tak mówi doświadczenie) przez JVM, przechowuje się w nim między innymi informacje o klasach załadowanych przez ClassLoadera. Był taki problem z biblioteką javaassist, używanej przez kontener EJB3, który powodował ciągłe powiększanie obszaru zajmowanego PermGen, aż do katastrofy JVM. Do sterowania (w pewnym stopniu) GC mogą służyć parametry uruchomieniowe JVM. </p> <div class="mw-heading mw-heading3"><h3 id="Notka_dla_programistów_C++"><span id="Notka_dla_programist.C3.B3w_C.2B.2B"></span>Notka dla programistów C++</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=12" title="Edytuj sekcję: Notka dla programistów C++"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>W Java nie ma zmiennych globalnych. Ponieważ w dobrym przybliżeniu wszystko jest klasą (dokładnie rzecz ujmując może być klasą), więc zmienna globalna nie istnieje (każda zmienna jest składową jakiejś klasy lub zmienną lokalną).</li></ul> <ul><li>Wszystkie klasy są pochodnymi od jednej wspólnej klasy Object.</li></ul> <ul><li>W Java nie ma wielokrotnego dziedziczenia. W Java występuje za to mechanizm interfejsów. Jedna klasa może implementować wiele interfejsów.</li></ul> <ul><li>Brak preprocesora. Nie jest potrzebny ponieważ wszystkim może zająć się Wirtualna Maszyna Java.</li></ul> <ul><li>Nie ma plików nagłówkowych. Program podzielony jest na pakiety.</li></ul> <ul><li>Brak typedef - tworzenie alternatywnych nazw dla istniejących typów nie jest wspierane.</li></ul> <ul><li>Brak możliwości przeciążania operatorów.</li></ul> <ul><li>Operator zakresu :: jest zastąpiony znakiem kropki.</li></ul> <ul><li>W języku Java nie istnieje możliwość przekazania domyślnej wartości, ani listy inicjalizującej w C++.</li></ul> <ul><li>Brak destruktorów i konieczności pamiętania o zwalnianiu pamięci. Działa garbage collector, który robi to za nas.</li></ul> <ul><li>Przy przekazywaniu argumentów dominuje referencja - wyjątkami są typy proste przekazywane przez wartość.</li></ul> <ul><li>W Javie łańcuchy znaków są obiektami klasy java.lang.String.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Nauka_programowania_w_języku_Java"><span id="Nauka_programowania_w_j.C4.99zyku_Java"></span>Nauka programowania w języku Java</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=13" title="Edytuj sekcję: Nauka programowania w języku Java"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Naukę programowania można podzielić na pewne etapy. Pierwszy to poznanie struktur języka takich jak: pętle, warunki, operatory, podstawowe wyrażenia i składnia. Nie da się w tym czasie uniknąć osobnego działu, jakim jest korzystanie z bibliotek dostępnych w języku. Choćby po to, by wyświetlić coś na ekranie lub pobrać wiadomość od użytkownika. Te dwa elementy przeplatają się w początkowych etapach nauki języka. Później przychodzi czas na szczegóły związane z semantyką oraz składnią kodu, niuansami, dzięki którym można tworzyć optymalny kod i pisać kod sprytniej i wydajniej. </p><p>Poza nauką języka programowania trzeba poznać paradygmaty programowania jako takiego czyli przyjęte, obowiązujące lub zalecane reguły pisania programu, niezależne od tego w jakim języku programowania (wysokiego poziomu) piszemy. Jest to tak zwany dział "inżynierii oprogramowania", którym tutaj nie będziemy się zajmować. </p><p>Potraktuj naukę języka programowania jak etapy, w których jesteś wyposażany w kolejne narzędzia. Na początku Twoja wiedza jest równa niemalże zeru, później umiesz pierwszą rzecz, drugą, trzecią... jesteś wyposażany w kolejne narzędzia, poznajesz więcej mechanizmów, których możesz użyć do swojej pracy z językiem. </p> <div class="mw-heading mw-heading2"><h2 id="Komunikacja_z_użytkownikiem"><span id="Komunikacja_z_u.C5.BCytkownikiem"></span>Komunikacja z użytkownikiem</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=14" title="Edytuj sekcję: Komunikacja z użytkownikiem"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Z racji struktury używanych dziś systemów operacyjnych istnieją dwie podstawowe warstwy komunikacji z użytkownikiem: konsola i GUI (Graphic User Interface). Pierwsza z nich to tak zwana konsola, czyli literki w okienku (czy na ekranie). Komunikowanie się z użytkownikiem (wyświetlanie informacji, pobieranie danych od użytkownika) jest znacznie prostsze w trybie konsoli. Dlatego też wszystkie początkowe składniki Javy poznamy pisząc programy działające właśnie pod konsolą. Unikniemy w ten sposób komplikowania kodu fragmentami charakterystycznymi dla bibliotek obsługujących graficzny tryb użytkownika, który poznamy w dalszej części kursu. Pozwoli to skupić się i wyeksponować to czego uczymy nie zaciemniając kodu niepotrzebnymi fragmentami, niezwiązanymi z tematem. Kiedy już oswoisz się z Javą jako taką - nic nie stoi na przeszkodzie abyś zaczął tworzyć aplikacje posiadające graficzny interfejs - jednak naukę najlepiej rozpocząć od prostych aplikacji pisanych pod konsolą. </p> <div class="mw-heading mw-heading2"><h2 id="Kurs_podstawowy">Kurs podstawowy</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=15" title="Edytuj sekcję: Kurs podstawowy"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>W tej części postaram się zapoznać Cię z podstawowymi elementami języka takimi jak: pętle, warunki, zmienne itp. Na początku każdego zagadnienia będzie kilka słów teorii, później postaram się zobrazować go w postaci kodu programu. Do niektórych działów będę dodawał dodatkowe paragrafy uściślające pewne kwestie, ważne dla osób już znających się na programowaniu. Jeżeli dopiero zaczynasz swoją przygodę z pisaniem programów, nie musisz ich czytać, są one tam raczej dla zaawansowanych programistów potrafiących już posługiwać się językiem programowania w celu zwrócenia uwagi na pewne kwestie mogące odgrywać rolę w ich programach - osobie dopiero uczącej się mogłyby tylko zaciemnić obraz całości i stać się niepotrzebną na początku komplikacją. </p><p>Ponieważ aby coś wyświetlić lub pobrać jakieś dane od użytkownika trzeba użyć bibliotek oraz w trakcie programowania używać pewnych konwencji - niektóre fragmenty mogą wydać się dla Ciebie na samym początku niezrozumiałe - a do ich objaśnienia dojdziemy później. Postaraj się nie zwracać na nie uwagi w początkowej fazie nauki, przyjąć, że "tak się robi" i poczekać trochę aż z czasem wszystko się wyjaśni. Zaczynamy! </p> <div class="mw-heading mw-heading3"><h3 id="Jak_kompilować_/_uruchamiać_programy"><span id="Jak_kompilowa.C4.87_.2F_uruchamia.C4.87_programy"></span>Jak kompilować / uruchamiać programy</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=16" title="Edytuj sekcję: Jak kompilować / uruchamiać programy"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Jeżeli używasz konsoli najpierw musisz skompilować kod (przetłumaczyć na język zrozumiały dla Wirtualnej Maszyny Java). Robisz to poleceniem: </p> <pre>javac NazwaPliku.java </pre> <p>Powstanie wtedy plik <b>NazwaPliku.class</b>, który będzie już programem w języku Java. Aby go uruchomić wykonaj: </p> <pre>java NazwaPliku </pre> <p>i po problemie. </p><p>Jeżeli używać środowiska IDE nie będziesz musiał wpisywać żadnych komend. W Eclipse wystarczy, że wybierzesz: <b>Run \ Run As \ Java Application </b>. W NetBeans zaś wybierz <b>Run \ Run Main Project</b> (musisz tylko zwrócić uwagę który projekt jest wyróżniony po lewej stronie na liście <b>projects</b>). Jeżeli chcesz uruchomić inny projekt, kliknij na jego nazwę prawym przyciskiem myszy i wybierz <b>Set As Main Project</b>. </p> <div class="mw-heading mw-heading3"><h3 id="Struktura_podstawowego_programu">Struktura podstawowego programu</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=17" title="Edytuj sekcję: Struktura podstawowego programu"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>W Javie każdy program posiada pewną sztywną strukturę. Nie proszę, abyś ją zrozumiał (jeszcze nie teraz), ale żebyś po prostu zapamiętał ją i przyjął, że taka jest (z czasem wszystko stanie się dla Ciebie jasne). </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">NazwaPliku</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="w"> </span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">}</span> </pre></div> <p>Jeżeli chciałbyś uruchomić ten program, musiałbyś go zapisać w pliku <code>NazwaPliku.java</code>. Po prostu w miejscu gdzie widnieje <b>NazwaPliku</b> musisz wpisać nazwę pliku, w którym zapisujesz swój program. Jeżeli plik będzie nazywał się <code>Pusty.java</code> to powyższy kod będzie wyglądał tak: </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Pusty</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="w"> </span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">}</span> </pre></div> <p>Dobrym nawykiem jest pisanie nazwy klasy wielką literą. Nazwa pliku z kodem musi być taka sama jak nazwa klasy. W tym przypadku to "Pusty", a plik, w jakim zapiszemy kod, to <code>Pusty.java</code>. </p><p>Powyższy program nic nie robi - jest jak łupinka orzecha pustego w środku. Jeżeli Twój edytor wspiera tworzenie szablonów nowych dokumentów, to dobrym pomysłem może okazać się stworzenie właśnie takiego szablonu w edytorze - przynajmniej na początek. Zwolni Cię to z obowiązku przepisywania tej struktury za każdym razem. </p> <div class="mw-heading mw-heading4"><h4 id="Struktura_programu_dla_zaawansowanych">Struktura programu dla zaawansowanych</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=18" title="Edytuj sekcję: Struktura programu dla zaawansowanych"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Ponieważ w języku Java wszystko jest obiektem, również program musi być reprezentowany jako klasa. JRE proszone o uruchomienie pliku, wywołuje domyślnie metodę <code>main</code> klasy, o nazwie identycznej z nazwą pliku. Jeżeli w pliku nie znajduje się klasa o tej samej nazwie zostanie zwrócony błąd. Wszystko, co znajduje się w metodzie <code>main</code>, to właśnie nasz program. Ponieważ nigdzie nie jest tworzony obiekt naszej klasy, metoda <code>main</code> musi być statyczna, aby można było ją wywołać bez tworzenia instancji klasy (czyli bez tworzenia obiektu). Nakłada to na nas pewne ograniczenia - na przykład nie możemy korzystać z <code>this</code> (nie ma ono żadnego sensu w metodzie statycznej). Metodą pozwalającą ominąć ten problem jest stworzenie obiektu w metodzie <code>main</code> i przeniesienie kodu do konstruktora: </p><p><br /> </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Pusty</span><span class="p">{</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">Pusty</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="c1">// Tutaj kod programu</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Pusty</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">}</span> </pre></div> <p>Powyższy kod tworzy obiekt klasy, którą projektujemy - dzięki temu ograniczenia związane z pisaniem kodu w metodzie statycznej znikają. Zastanawiać może jeszcze fragment kodu <code>String [] args</code> - jest to nic innego jak przekazanie do programu listy (tutaj tablicy) stringów (łańcuchów znaków czy jak wolisz napisów), będących parametrami wywołania Twojego programu. To właśnie poprzez zmienną <code>args</code> (arguments) otrzymujesz dostęp do wszystkich parametrów z jakimi została uruchomiona twoja aplikacja. Przekazanie parametrów od wersji <i>Java SE5</i> może wyglądać również tak: </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="p">...</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Zmienne">Zmienne</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=19" title="Edytuj sekcję: Zmienne"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Zmienne możesz sobie wyobrazić jak pudełka, które najpierw opisujesz jakąś etykietką (nazwą), potem coś do takiego pudełka wkładasz i to tam trzymasz. Jest tylko jeden warunek: musisz wcześniej powiedzieć, co będziesz w tym pudełku trzymał. W analogii do zwierząt: inne pudełko weźmiesz dla psa (budę), inne dla rybki (akwarium). Dlatego musisz wziąć odpowiednie pudełko w zależności od tego, co chcesz trzymać. Potem możesz nazwać to pudełko. Znowu analogicznie możesz nakleić nalepkę z napisem "Nemo" na akwarium - informującą o tym, że rybka w akwarium nazywa się Nemo. Może być wiele rybek, ale twoją odróżnia od innych to, że nazywa się Nemo. </p><p>Jeżeli nie zrozumiałeś analogii ze zwierzątkami, to może porównanie matematyczne da Ci do myślenia. Kiedy rozwiązujesz jakieś zagadnienie matematyczne, gdzieś na końcu pojawia się coś w stylu: </p> <pre>x = 2 </pre> <p>Cały czas posługiwałeś się symbolem <b>x</b> no i nagle okazuje się, że jest równy 2 ... jeżeli <b>x = 2</b> to </p> <pre>x + x + x = 6 </pre> <p>zgadza się ? Czyli posługujesz się x-em jak dwójką i za każdym razem gdy piszesz x myślisz 2. Identycznie sprawa ma się ze zmiennymi. </p><p>Wróćmy do zmiennych jako takich. Zmienne to nic innego, jak nazywanie w programie napisów i liczb. Możesz liczbie 2 przypisać dowolną nazwę. Używane nazwy mogą być niemalże dowolnie długie (nie ważne czy zmienna będzie nazywała się <b>x</b> czy <b>niewiadoma_rownania_x</b>). W nazwach najlepiej ograniczać się do stosowania małych i wielkich liter, cyfr i znaku podkreślenia. </p> <div class="mw-heading mw-heading4"><h4 id="Typy_zmiennych">Typy zmiennych</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=20" title="Edytuj sekcję: Typy zmiennych"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Podstawowe informacje, jakie możemy chcieć przetrzymać w komputerze, to: wartość logiczna, liczba, napis lub pojedynczy znak. Mamy więc różne <b>typy</b> zmiennych. Podstawową wartością, którą możesz chcieć przechować sobie gdzieś (zanotować na tak długo jak Ci jest potrzebna - a tak działają zmienne), jest liczba. Komputer rozróżnia liczby całkowite (2; -15; 123) i zmiennoprzecinkowe (2,14; 3,14; -1,5). Do trzymania liczby <b>całkowitej</b> używać będziemy typu <b>int</b>. Tak więc napisanie: </p> <pre>int liczba; </pre> <p>stworzy zmienną o nazwie liczba. Teraz powrót do analogii pudełek. Stworzyłeś pudełko, które umie trzymać liczby całkowite i nazwałeś je <b>liczba</b>. Masz więc pudełko <b>liczba</b>. Ale co w nim jest? Nie wiadomo - i naprawdę to jest poprawna odpowiedź. Musisz pamiętać! Jak tworzysz pudełko to ono w ogólności na starcie nie jest puste (tylko w pewnych szczególnych przypadkach). Aby teraz na przykład włożyć do tego pudełka liczbę 2 piszesz: </p> <pre>liczba = 2; </pre> <p>no i w pudełku znalazła się liczba 2, a to co było w środku, zostało automatycznie wyrzucone. Można w jednej linijce stworzyć pudełko i włożyć do niego coś pisząc: </p> <pre>int liczba = 2; </pre> <p>Teraz wartości zmiennoprzecinkowe. Typ zmiennej nazywa się <b>float</b>: </p> <pre>float liczba_zmiennoprzecinkowa = 3.14; </pre> <p>stworzy pudełko do trzymania liczb zmiennoprzecinkowych (<b>float</b>) o nazwie <b>liczba_zmiennoprzecinkowa</b> i włoży do tego pudełka wartość <b>3,14</b>. Teraz przechodzimy z terminologii pudełkowej do terminologii zmiennych - najwyższy czas! Więc teraz uważaj. Do zapisania pojedynczego znaku użyjesz <i>typu</i> <b>char</b>. </p> <pre>char znak = 'a'; </pre> <p>Powyższa linijka <i>utworzy</i> zmienną <i>typu</i> <b>char</b> o <i>nazwie</i> <b>znak</b> i <i>wartości</i> <b>a</b> (zawartość pudełka będziemy nazywać wartością zmiennej). Zapewne trapi Cię cały czas pytanie: "skąd tam się wziął średnik na końcu". Otóż programowanie polega na wydawaniu komputerowi poleceń. Tak jak to powyższe "Utwórz zmienną typu znakowego o wartości <b>a</b>". Każde takie polecenie w języku Java musi kończyć się średnikiem. Programując przyjmuje się, że zapisujemy jedno polecenie w jednej linijce (choć można w jednej linijce zapisać więcej poleceń - są wtedy po prostu oddzielone średnikami). Dzięki temu program wygląda tak, że <b>każda linijka kończy się średnikiem</b> - choć tak naprawdę <b>każde polecenie (instrukcja) kończy się średnikiem</b>. Ot cała filozofia średników. Zwróć jeszcze uwagę, na to, że pojedyncze znaki zapisujemy w apostrofach. Użycie cudzysłowu byłoby błędem. Powyższą wiedzę przedstawię w tabelce: </p> <table border="1"> <tbody><tr> <th>Typ zmiennej </th> <th>Przeznaczenie </th> <th>Przykład </th> <th>Uwagi </th></tr> <tr> <td>int </td> <td>liczby całkowite </td> <td><pre>int liczba = -777;</pre> </td> <td>brak </td></tr> <tr> <td>float </td> <td>liczby zmiennoprzecinkowe </td> <td><pre>float pi = 3.14;</pre> </td> <td>brak </td></tr> <tr> <td>char </td> <td>pojedynczy znak </td> <td><pre>char znak = 'A';</pre> </td> <td>zawsze zapisuje się <b>pomiędzy apostrofami</b> </td></tr></tbody></table> <p><i><b>Każdą</b> instrukcję kończ znakiem średnika <b>;</b> Nie wstawienie średnika w choć jednej linijce zaowocuje błędem.</i> </p> <div class="mw-heading mw-heading2"><h2 id="Pierwszy_program">Pierwszy program</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=21" title="Edytuj sekcję: Pierwszy program"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Utwórzmy plik <code>Hello.java</code> o poniższej treści. </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//główna klasa programu:</span> <span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Hello</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="c1">//główna metoda programu:</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">args</span><span class="o">[]</span><span class="p">){</span><span class="w"> </span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="s">"Witaj swiecie!"</span><span class="p">);</span><span class="w"> </span><span class="c1">//ten tekst w nawiasie zostanie wyświetlony: </span> <span class="w"> </span><span class="p">}</span><span class="w"> </span> <span class="p">}</span> </pre></div> <p>Najlepiej do tego celu użyć edytora plików tekstowych kolorującego składnię. Dzięki temu bez problemu odróżnisz treść programu od licznych komentarzy, których obecność ma pomóc zorientować się w temacie i nie wpływa w żaden sposób na działanie naszego programu. </p><p>Ja użyłem darmowego programu <a href="https://pl.wikipedia.org/wiki/Vim" class="extiw" title="w:Vim">Vim</a> (wersję dla twojego systemu operacyjnego pobierzesz spod adresu <a rel="nofollow" class="external free" href="http://www.vim.org/download.php">http://www.vim.org/download.php</a>. Możesz skopiować powyższe źródło programu, lub przepisać je ręcznie (w celu rozpoczęcia ręcznej edycji tekstu programu, należy przestawić Vima w tryb edycji za pomocą klawisza <b>a</b>), a następnie zapisać w pliku <i>Hello.java</i> . </p><p>Ponieważ domyślnie Vim koloruje składnię języka programowania na podstawie rozszerzenia otwieranego pliku, dopiero po ponownym otwarciu pliku <code>Hello.java</code> zobaczymy kolorową składnię języka Java. </p><p>Chcąc skompilować nasz program do postaci kodu bajtowego, wydajemy polecenie <code>javac Hello.java</code>. Utworzony zostanie wówczas plik o nazwie <code>Hello.class</code>, który - ponieważ zdefiniowaliśmy metodę główną <code>main( )</code> - możemy wykonać za pomocą polecenia <code>java Hello</code>. </p> <div class="mw-heading mw-heading3"><h3 id="Obiektowe_podstawy">Obiektowe podstawy</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=22" title="Edytuj sekcję: Obiektowe podstawy"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Podobnie do pierwszego programu napisanego w języku <i>Java</i> , aby uruchomić poniższe przykłady, należy je wcześniej skompilować do kodu bajtowego za pomocą polecenia <b>javac <nazwa pliku o rozszerzeniu .java></b>, a następnie uruchomić na Wirtualnej Maszynie Javy za pomocą polecenia <b>java <nazwa pliku o rozszerzeniu .class pisana tutaj bez rozszerzenia></b>. Pamiętajmy, że uruchomić możemy tylko tę klasę, która zawiera metodę <i>main( )</i>. Zatem dla <i>Przykładu 1</i> po wydaniu polecenia <b>javac Proba.java</b>, w celu wykonania programu należy wykonać polecenie <b>java Proba</b>. </p> <pre>T:\archiwum\java>java Proba Jan Kowalski, 1981, PESEL: 81111224350 T:\archiwum\java> </pre> <p>Wykonanie polecenia <code>java Proba.class</code> wygeneruje wyjątek podobny do tego poniżej. Polecenie <code>java</code> jako argumentu oczekuje nazwy klasy, a nie nazwy pliku, do którego skompilowano klasę. Stąd poniższy komunikat. </p> <pre>T:\archiwum\java>java Proba.class Exception in thread "main" java.lang.NoClassDefFoundError: Proba/class T:\archiwum\java> </pre> <p><br /> </p><p>Również polecenie <code>java Person</code> zgłosi wyjątek: </p> <pre>T:\archiwum\java>java Person Exception in thread "main" java.lang.NoSuchMethodError: main T:\archiwum\java> </pre> <p>ponieważ klasa <code>Person</code> nie zawiera metody <code>main( )</code>, której deklaracja jest konieczna, jeśli chcemy uruchamiać nasz program z wiersza poleceń. W naszym przykładzie klasa <code>Person</code> zawiera wyłącznie definicje typów danych, składających się na opis osoby. </p> <div class="mw-heading mw-heading3"><h3 id="Przykład_1"><span id="Przyk.C5.82ad_1"></span>Przykład 1</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=23" title="Edytuj sekcję: Przykład 1"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Listing pliku <code>Proba.java</code> : </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Proba</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">Person</span><span class="w"> </span><span class="n">p</span><span class="p">,</span><span class="w"> </span><span class="n">q</span><span class="p">,</span><span class="w"> </span><span class="n">r</span><span class="p">;</span> <span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Person</span><span class="p">();</span> <span class="w"> </span><span class="n">q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Person</span><span class="p">();</span> <span class="w"> </span><span class="n">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Person</span><span class="p">();</span> <span class="w"> </span> <span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">firstname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Jan"</span><span class="p">;</span> <span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">lastname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Kowalski"</span><span class="p">;</span> <span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">year</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1981</span><span class="p">;</span> <span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">PESEL</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"81111224350"</span><span class="p">;</span> <span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="na">firstname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Anna"</span><span class="p">;</span> <span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="na">lastname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Nowak"</span><span class="p">;</span> <span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="na">year</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1975</span><span class="p">;</span> <span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="na">PESEL</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"75032074926"</span><span class="p">;</span> <span class="w"> </span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">firstname</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">" "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">lastname</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o">+</span> <span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">year</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">", PESEL: "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">PESEL</span><span class="w"> </span><span class="p">);</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="na">firstname</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">" "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="na">lastname</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o">+</span> <span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="na">year</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">", PESEL: "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">q</span><span class="p">.</span><span class="na">PESEL</span><span class="w"> </span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kd">class</span> <span class="nc">Person</span> <span class="p">{</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">firstname</span><span class="p">,</span><span class="w"> </span><span class="n">lastname</span><span class="p">;</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">year</span><span class="p">;</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">PESEL</span><span class="p">;</span> <span class="p">}</span> </pre></div> <p>Plik zawiera definicje dwóch klas <i>Person</i> oraz <i>Proba</i> . Pierwsza z nich definiuje typ w postaci, w którym będziemy przechowywać dane na temat przykładowych osób <i>Jana Kowalskiego</i> i <i>Anny Nowak</i>. Klasa <i>Proba</i> zawiera przykład zastosowania klasy <i>Person</i> w krótkim programie wpisującym dane osobowe naszych bohaterów <i>Jana</i> i <i>Anny</i> oraz wyświetlającym je w zrozumiałej dla użytkownika formie. Jak widać z przykładu, pomimo tego, że wzorzec jest wspólny dla trzech obiektów (definiacja klasy Person), każdy z nich przechowuje swoje niezależne dane. Powyższy kod jest <b>jedynie przykładem</b> i zastosowano w nim konwencje, których w normalnym programowaniu nie powinno się stosować (np. publiczne atrybuty obiektu). </p> <div class="mw-heading mw-heading3"><h3 id="Przykład_2"><span id="Przyk.C5.82ad_2"></span>Przykład 2</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=24" title="Edytuj sekcję: Przykład 2"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Najlepiej w nowo utworzonym folderze edytujemy plik o nazwie <i>Test.java</i> wg poniższej treści: </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">class</span> <span class="nc">Complex</span> <span class="p">{</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">re</span><span class="p">,</span><span class="w"> </span><span class="n">im</span><span class="p">;</span><span class="w"> </span><span class="c1">// odpowiednik definicji rekordu</span> <span class="w"> </span><span class="c1">// re - część rzeczywista liczby zespolonej</span> <span class="w"> </span><span class="c1">// im - część urojona liczby zespolonej</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="nf">mod</span><span class="p">()</span><span class="w"> </span><span class="c1">// definicja metody w klasie</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Math</span><span class="p">.</span><span class="na">sqrt</span><span class="p">(</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">re</span><span class="o">*</span><span class="k">this</span><span class="p">.</span><span class="na">re</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">im</span><span class="o">*</span><span class="k">this</span><span class="p">.</span><span class="na">im</span><span class="w"> </span><span class="p">);</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// this oznacza dany obiekt w klasie Test bedzie to z.re i z.im</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">()</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"("</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">re</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">im</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">")"</span><span class="w"> </span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">Complex</span><span class="w"> </span><span class="nf">coupled</span><span class="p">()</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">Complex</span><span class="w"> </span><span class="n">other</span><span class="p">;</span><span class="w"> </span><span class="c1">// bufor dla this, żeby nie zmienił</span> <span class="w"> </span><span class="n">other</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Complex</span><span class="p">();</span><span class="w"> </span><span class="c1">// swojej wartości .im</span> <span class="c1">//! other = this; // błędne, ustawienie 'this' do zmiennej</span> <span class="w"> </span><span class="n">other</span><span class="p">.</span><span class="na">re</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">re</span><span class="p">;</span><span class="w"> </span><span class="c1">// ustawiamy tylko wartości</span> <span class="w"> </span><span class="n">other</span><span class="p">.</span><span class="na">im</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">im</span><span class="p">;</span> <span class="w"> </span><span class="n">other</span><span class="p">.</span><span class="na">im</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="n">other</span><span class="p">.</span><span class="na">im</span><span class="p">;</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">other</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kd">class</span> <span class="nc">Test</span> <span class="p">{</span><span class="w"> </span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">Complex</span><span class="w"> </span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="p">,</span><span class="w"> </span><span class="n">z</span><span class="p">;</span><span class="w"> </span><span class="c1">// x,y,z reprezentują obiekty klasy Complex</span> <span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Complex</span><span class="p">();</span><span class="w"> </span><span class="c1">// tworzenie nowego obiekt "x"</span> <span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Complex</span><span class="p">();</span> <span class="w"> </span><span class="n">z</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Complex</span><span class="p">();</span> <span class="w"> </span> <span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">re</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">5.0</span><span class="p">;</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">im</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">3.0</span><span class="p">;</span> <span class="w"> </span><span class="n">y</span><span class="p">.</span><span class="na">re</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">4.0</span><span class="p">;</span><span class="w"> </span><span class="n">y</span><span class="p">.</span><span class="na">im</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">4.0</span><span class="p">;</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">print</span> <span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="s">"Liczby zesp.: "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">toString</span><span class="p">()</span><span class="w"> </span><span class="p">);</span><span class="w"> </span><span class="c1">// do liczby mozna dodac </span> <span class="w"> </span><span class="c1">// nie moze byc przecinkow // string, wowczas liczba</span> <span class="w"> </span><span class="c1">// w tym nawiasie // staje się stringiem</span> <span class="w"> </span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">y</span><span class="p">.</span><span class="na">toString</span><span class="p">()</span><span class="w"> </span><span class="p">);</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="w"> </span><span class="s">"=========================================="</span><span class="w"> </span><span class="p">);</span> <span class="w"> </span><span class="n">z</span><span class="p">.</span><span class="na">re</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">re</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">y</span><span class="p">.</span><span class="na">re</span><span class="p">;</span><span class="w"> </span> <span class="w"> </span><span class="n">z</span><span class="p">.</span><span class="na">im</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">im</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">y</span><span class="p">.</span><span class="na">im</span><span class="p">;</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="w"> </span><span class="s">"suma liczb: "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">z</span><span class="p">.</span><span class="na">toString</span><span class="p">()</span><span class="w"> </span><span class="p">);</span> <span class="w"> </span><span class="n">z</span><span class="p">.</span><span class="na">re</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">re</span><span class="o">*</span><span class="n">y</span><span class="p">.</span><span class="na">re</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">im</span><span class="o">*</span><span class="n">y</span><span class="p">.</span><span class="na">im</span><span class="p">;</span> <span class="w"> </span><span class="n">z</span><span class="p">.</span><span class="na">im</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">re</span><span class="o">*</span><span class="n">y</span><span class="p">.</span><span class="na">im</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">im</span><span class="o">*</span><span class="n">y</span><span class="p">.</span><span class="na">re</span><span class="p">;</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="w"> </span><span class="s">"iloczyn liczb: "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">z</span><span class="p">.</span><span class="na">toString</span><span class="p">()</span><span class="w"> </span><span class="p">);</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="w"> </span><span class="s">"modul pierwszej: "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">mod</span><span class="p">()</span><span class="w"> </span><span class="p">);</span> <span class="w"> </span><span class="n">z</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">coupled</span><span class="p">();</span><span class="w"> </span><span class="c1">// tworzy sprzężoną do x i wstawia ja</span> <span class="w"> </span><span class="c1">// w miejsce z</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="w"> </span><span class="n">x</span><span class="p">.</span><span class="na">toString</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">"sprzezona do pierwszej: "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">z</span><span class="p">.</span><span class="na">toString</span><span class="p">()</span><span class="w"> </span><span class="p">);</span> <span class="w"> </span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p><br /> Mamy tutaj zdefiniowane dwie klasy <i>Complex</i> i <i>Test</i>. Zatem po zakończeniu kompilacji do kodu bajtowego otrzymamy dwa pliki z rozszerzeniem <i>.class</i> . Klasa <i>Complex</i> zawiera definicje typu liczby zespolonej, na przykładzie którego wykonywać będziemy operacje dodawania, mnożenia, itd. przykładowych liczb zespolonych. W klasie <i>Test</i> znajdują się polecenia wykorzystujące typ i metody zdefiniowane dla klasy <i>Complex</i>. </p> <div class="mw-heading mw-heading3"><h3 id="Przykład_3"><span id="Przyk.C5.82ad_3"></span>Przykład 3</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=25" title="Edytuj sekcję: Przykład 3"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Plik źródłowy <i>CrashTest2.java</i> : </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">class</span> <span class="nc">Vehicle</span> <span class="p">{</span> <span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">owner</span><span class="p">;</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">model</span><span class="p">;</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">type</span><span class="p">;</span><span class="w"> </span><span class="c1">//1,2,3 - typy samochodow</span> <span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">reg</span><span class="p">;</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">setOwner</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">s</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">owner</span><span class="o">=</span><span class="n">s</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">getOwner</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">owner</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="c1">// public String toString()</span> <span class="c1">// { return model + ", " + type + "\nReg.No." + reg +</span> <span class="c1">// ", wlasnosc: " + owner + "\n"; }</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">()</span> <span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">model</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">typeToString</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">"\nNr "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">reg</span><span class="w"> </span><span class="o">+</span> <span class="w"> </span><span class="s">", wlasnosc: "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">owner</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">"\n"</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="w"> </span> <span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="o">=</span><span class="mi">1000</span><span class="p">;</span><span class="w"> </span><span class="cm">/* poniewaz jest static, z kazdego </span> <span class="cm"> obiektu nastepuje odwolanie do tej</span> <span class="cm"> samej komorki pamieci */</span> <span class="w"> </span> <span class="w"> </span><span class="n">Vehicle</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">reg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">// konstruktor klasy </span> <span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">typeToString</span><span class="p">()</span> <span class="w"> </span><span class="p">{</span><span class="w"> </span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">type</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"rower"</span><span class="p">;</span> <span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">type</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"motocykl"</span><span class="p">;</span> <span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">type</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"auto"</span><span class="p">;</span> <span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">"NIEZNANY!"</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kd">class</span> <span class="nc">CrashTest2</span> <span class="p">{</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">Vehicle</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Vehicle</span><span class="p">();</span> <span class="w"> </span><span class="n">Vehicle</span><span class="w"> </span><span class="n">v2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Vehicle</span><span class="p">();</span> <span class="w"> </span><span class="n">Vehicle</span><span class="w"> </span><span class="n">v3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Vehicle</span><span class="p">();</span> <span class="w"> </span> <span class="w"> </span><span class="n">v1</span><span class="p">.</span><span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Syrena 105 Turbo"</span><span class="p">;</span> <span class="w"> </span><span class="n">v1</span><span class="p">.</span><span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span> <span class="w"> </span><span class="n">v1</span><span class="p">.</span><span class="na">setOwner</span><span class="p">(</span><span class="s">"Jan Kowalski"</span><span class="p">);</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">v1</span><span class="p">);</span> <span class="w"> </span><span class="n">v2</span><span class="p">.</span><span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Harley D., 1965"</span><span class="p">;</span> <span class="w"> </span><span class="n">v2</span><span class="p">.</span><span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span> <span class="w"> </span><span class="n">v2</span><span class="p">.</span><span class="na">setOwner</span><span class="p">(</span><span class="s">"Crazy Jackill"</span><span class="p">);</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">v2</span><span class="p">);</span> <span class="w"> </span><span class="n">v3</span><span class="p">.</span><span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Romet Wigry 3"</span><span class="p">;</span> <span class="w"> </span><span class="n">v3</span><span class="p">.</span><span class="na">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="n">v3</span><span class="p">.</span><span class="na">setOwner</span><span class="p">(</span><span class="s">"John Brown"</span><span class="p">);</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">v3</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p><br /> </p> <div class="mw-heading mw-heading3"><h3 id="Przykład_4"><span id="Przyk.C5.82ad_4"></span>Przykład 4</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=26" title="Edytuj sekcję: Przykład 4"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Plik o nazwie <i>CrashTest.java</i> : </p><p><br /> </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">class</span> <span class="nc">Car</span> <span class="p">{</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">make</span><span class="p">;</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">model</span><span class="p">;</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">year</span><span class="p">;</span> <span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">reg</span><span class="p">;</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">()</span> <span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">make</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">model</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">year</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">", "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">reg</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="cm">/* jesli cos jest prywatne, to dostep do tej rzeczy moze sie odbyc</span> <span class="cm">poprzez jakis wewnetrzny mechanizm, w tym wypadku beda to ponizsze </span> <span class="cm">metody */</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">getReg</span><span class="p">()</span> <span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">reg</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="cm">/* public void setReg(String r)</span> <span class="cm"> { reg = r; }</span> <span class="cm"> Zamiast powyzszej metody wprowadzamy bardziej zaawansowana. </span> <span class="cm">*/</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">setReg</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">r</span><span class="p">)</span> <span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">r</span><span class="p">.</span><span class="na">length</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">7</span><span class="w"> </span><span class="p">)</span> <span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="cm">/* System.out.println( "Bad reg:" + r );</span> <span class="cm"> System.exit(1); */</span> <span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IllegalArgumentException</span><span class="p">(</span><span class="s">"Bad reg: "</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">r</span><span class="p">);</span><span class="w"> </span><span class="c1">// wyrzucamy wyjątek</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="n">reg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">r</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span> <span class="cm">/* ponizej znajduja sie konstruktory wykorzystywane przy okazji</span> <span class="cm">korzystania z klasy Car. Zasada polega na tym: </span> <span class="cm">jesli deklarujemy choc jeden konstruktor, musimy zadeklarowac wszystkie</span> <span class="cm">wykorzystywane. Do tej pory jedynym wykorzystywanym byl najprostszy</span> <span class="cm">"p=new Car()". Drugim konstruktorem jest ten, za pomoca ktorego nadajemy </span> <span class="cm">wartosc "q" */</span> <span class="w"> </span><span class="n">Car</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="n">Car</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">mk</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">md</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">y</span><span class="p">,</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">rg</span><span class="p">)</span> <span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">make</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mk</span><span class="p">;</span> <span class="w"> </span><span class="n">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">md</span><span class="p">;</span> <span class="w"> </span><span class="n">year</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">y</span><span class="p">;</span> <span class="w"> </span><span class="n">setReg</span><span class="p">(</span><span class="n">rg</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kd">class</span> <span class="nc">CrashTest</span> <span class="p">{</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span> <span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">Car</span><span class="w"> </span><span class="n">p</span><span class="p">,</span><span class="n">q</span><span class="p">,</span><span class="n">r</span><span class="p">;</span> <span class="w"> </span><span class="n">p</span><span class="o">=</span><span class="k">new</span><span class="w"> </span><span class="n">Car</span><span class="p">();</span> <span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">make</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Wolga"</span><span class="p">;</span> <span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">model</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"Cziornaja"</span><span class="p">;</span> <span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">year</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1968</span><span class="p">;</span> <span class="w"> </span><span class="c1">//p.reg="SEB1999";</span> <span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="na">setReg</span><span class="p">(</span><span class="s">"SEB2000"</span><span class="p">);</span> <span class="w"> </span><span class="n">q</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Car</span><span class="p">(</span><span class="w"> </span><span class="s">"Fiat"</span><span class="p">,</span><span class="w"> </span><span class="s">"126p 4wd"</span><span class="p">,</span><span class="w"> </span><span class="mi">1972</span><span class="p">,</span><span class="w"> </span><span class="s">"XXXyyyy"</span><span class="w"> </span><span class="p">);</span> <span class="w"> </span><span class="c1">// === - wystepuje jako konstruktor</span> <span class="w"> </span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">p</span><span class="p">);</span> <span class="w"> </span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">q</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p><br /> </p> <div class="mw-heading mw-heading3"><h3 id="Przykład_5_-_prosta_grafika"><span id="Przyk.C5.82ad_5_-_prosta_grafika"></span>Przykład 5 - prosta grafika</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=27" title="Edytuj sekcję: Przykład 5 - prosta grafika"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Plik o nazwie <i>Rysik.java</i> : </p><p><br /> </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">java.awt.*</span><span class="p">;</span> <span class="kn">import</span><span class="w"> </span><span class="nn">javax.swing.*</span><span class="p">;</span> <span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Rysik</span> <span class="p">{</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">JFrame</span><span class="w"> </span><span class="n">okno</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">JFrame</span><span class="p">(</span><span class="s">"Okno"</span><span class="p">);</span> <span class="w"> </span><span class="n">okno</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">Plansza</span><span class="p">());</span> <span class="w"> </span><span class="n">okno</span><span class="p">.</span><span class="na">setSize</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="mi">100</span><span class="p">);</span> <span class="w"> </span> <span class="w"> </span><span class="c1">// dzięki tej linii program zakończy się po zamknięciu okna</span> <span class="w"> </span><span class="n">okno</span><span class="p">.</span><span class="na">setDefaultCloseOperation</span><span class="p">(</span><span class="n">JFrame</span><span class="p">.</span><span class="na">EXIT_ON_CLOSE</span><span class="p">);</span> <span class="w"> </span><span class="cm">/*</span> <span class="cm"> * bez poniższej linii kodu nasze okno będzie niewidoczne</span> <span class="cm"> * ustawienie setVisible(false) ukrywa okno, lecz go nie niszczy</span> <span class="cm"> * to znaczy, że możemy ukryć okno, a za chwilę je pokazać </span> <span class="cm"> * bez konieczności ponownego tworzenia go od podstaw</span> <span class="cm"> */</span> <span class="w"> </span><span class="n">okno</span><span class="p">.</span><span class="na">setVisible</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="kd">class</span> <span class="nc">Plansza</span><span class="w"> </span><span class="kd">extends</span><span class="w"> </span><span class="n">JPanel</span> <span class="p">{</span> <span class="w"> </span><span class="n">Plansza</span><span class="p">()</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="c1">// te informacje wydrukowane zostaną w konsoli/terminalu, a nie w oknie programu!!</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"Szerokość planszy:"</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">getWidth</span><span class="p">());</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"Wysokość planszy:"</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">getHeight</span><span class="p">());</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/*</span> <span class="cm"> * w tej funkcji umieszczamy kod ze wszystkim, co chcemy narysować</span> <span class="cm"> * jest to funkcja, która wywoływana jest automatycznie przez Javę </span> <span class="cm"> * za każdym razem, gdy zachodzi taka potrzeba (np. zmiana wielkości</span> <span class="cm"> * okna przez użytkownika); lepiej nie wywoływać jej na własną rękę</span> <span class="cm"> */</span> <span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">paint</span><span class="p">(</span><span class="n">Graphics</span><span class="w"> </span><span class="n">g</span><span class="p">)</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* </span> <span class="cm"> * umieszczenie tych zmiennych jako zmiennych lokalnych </span> <span class="cm"> * funkcji paint() zapewni aktualizację tych zmiennych </span> <span class="cm"> * podczas zmiany wielkości okna przez użytkownika</span> <span class="cm"> */</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">getWidth</span><span class="p">();</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">height</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="na">getHeight</span><span class="p">();</span> <span class="w"> </span><span class="c1">// obiekt graficzny g rysuje linię po przekątnej panelu z marginesem 10 pikseli</span> <span class="w"> </span><span class="n">g</span><span class="p">.</span><span class="na">drawLine</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="n">width</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="n">height</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span><span class="w"> </span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Narzędzia"><span id="Narz.C4.99dzia"></span>Narzędzia</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=28" title="Edytuj sekcję: Narzędzia"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Edytory">Edytory</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=29" title="Edytuj sekcję: Edytory"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>jEdit <a rel="nofollow" class="external autonumber" href="http://www.jedit.org/">[1]</a></li></ul> <p><span typeof="mw:File"><a href="/wiki/Plik:JEdit_4.3_Fedora.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/b/b6/JEdit_4.3_Fedora.png/450px-JEdit_4.3_Fedora.png" decoding="async" width="450" height="332" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/b/b6/JEdit_4.3_Fedora.png 1.5x" data-file-width="643" data-file-height="474" /></a></span> </p> <ul><li>Notepad++ <a rel="nofollow" class="external autonumber" href="http://notepad-plus.sourceforge.net/">[2]</a></li></ul> <p><span typeof="mw:File"><a href="/wiki/Plik:Notepad%2B%2B_screenshot2.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/9/90/Notepad%2B%2B_screenshot2.png/450px-Notepad%2B%2B_screenshot2.png" decoding="async" width="450" height="338" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/9/90/Notepad%2B%2B_screenshot2.png/675px-Notepad%2B%2B_screenshot2.png 1.5x, //upload.wikimedia.org/wikipedia/commons/9/90/Notepad%2B%2B_screenshot2.png 2x" data-file-width="800" data-file-height="600" /></a></span> </p> <div class="mw-heading mw-heading3"><h3 id="IDE">IDE</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=30" title="Edytuj sekcję: IDE"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Eclipse <a rel="nofollow" class="external autonumber" href="http://www.eclipse.org/">[3]</a></li></ul> <p><span typeof="mw:File"><a href="/wiki/Plik:Eclipse-screenshot.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikibooks/pl/thumb/d/d0/Eclipse-screenshot.png/450px-Eclipse-screenshot.png" decoding="async" width="450" height="283" class="mw-file-element" srcset="//upload.wikimedia.org/wikibooks/pl/thumb/d/d0/Eclipse-screenshot.png/675px-Eclipse-screenshot.png 1.5x, //upload.wikimedia.org/wikibooks/pl/thumb/d/d0/Eclipse-screenshot.png/900px-Eclipse-screenshot.png 2x" data-file-width="1210" data-file-height="760" /></a></span> </p><p>Eclipse jest darmową platformą przeznaczoną do tworzenia desktopowych aplikacji Java, zaprojektowana początkowo przez firmę IBM, a następnie udostępniona i rozwijana na zasadach Open Source przez <a rel="nofollow" class="external text" href="http://www.eclipse.org/org/foundation/">Fundację Eclipse</a> (ang. Eclipse Foundation). Jest to tzw. <i>Rich Client Platform</i> – aplikacje tworzone na jej podstawie mogą posiadać wbudowaną logikę, w przeciwieństwie do tzw. <i>Thin Client Platform</i>, gdzie po stronie użytkownika dostępny jest jedynie interfejs aplikacji, natomiast wszystkie operacje wykonywane są na serwerze (przykładem takiego rozwiązania jest zasada działania przeglądarek WWW). </p><p>Eclipse dostępne jest dla wszystkich platform, które posiadają własną implementację wirtualnej maszyny Java oraz dla których przygotowano implementację opracowanej przez Fundację biblioteki graficznej SWT, będącej alternatywą dla standardowych bibliotek graficznych Javy – AWT i Swing. Sama platforma nie dostarcza żadnych narzędzi służących do tworzenia kodu i budowania aplikacji, oferuje jednak obsługę wtyczek rozszerzających jej funkcjonalność, umożliwiających m.in. rozwijanie aplikacji w językach Java, C/C++, PHP, tworzenie GUI, modelowanie UML, współprace z serwerami aplikacji, serwerami baz danych itp. </p> <ul><li>Geany <a rel="nofollow" class="external autonumber" href="http://www.geany.org/">[4]</a> Geany jest to edytor tekstu stworzony z użyciem GTK2. Zawiera wszystkie podstawowe narzędzia z zintegrowanego środowiska programistycznego. Został on opracowany w celu zapewnienia małego i szybkiego IDE, które ma tylko kilka zależności od innych pakietów. Wspiera wiele typów plików, języków programowania oraz posiada kilka ciekawych funkcji.</li></ul> <ul><li>NetBeans <a rel="nofollow" class="external autonumber" href="http://www.netbeans.org/">[5]</a> NetBeans to kolejna platforma programistyczna, która ma na celu przyśpieszenie procesu tworzenia aplikacji pisanych w języku Java. Podstawowe mechanizmy wspierania programisty w pisaniu kodu to między innymi: podświetlanie błędów, pomoc w uzupełnianiu składni, automatyczne importowanie potrzebnych modułów czy zaznaczaniu niepotrzebnych fragmentów kodu oraz wygodny i użyteczny debugger. Środowisko działa zarówno pod kontrolą systemu Linux, jak i Windows, dzięki czemu możesz bezboleśnie przesiadać się pomiędzy systemami, nadal pracując z tą samą platformą. NetBeans wspiera również tworzenie aplikacji C/C++ oraz Ruby (RubyOnRails, po małych zmianach również Merb). Środowisko domyślnie implementuje wsparcie dla biblioteki Swing, między innymi graficzny designer do projektowania wyglądu aplikacji (okienek, kontrolek).</li> <li>JCreator <a rel="nofollow" class="external autonumber" href="http://www.jcreator.com/">[6]</a> proste i szybkie IDE, dostępne tylko na platformę Windows.</li> <li>IntelliJ IDEA <a rel="nofollow" class="external autonumber" href="https://www.jetbrains.com/idea/">[7]</a> IntelliJ IDEA to IDE tworzone przez JetBrains. Posiada dwie edycje: Community Edition (open-source) i Ultimate Edition (płatna). Posiada mechanizmy sprawdzania błędów składni, lub wykrywania możliwości użycia nowych mechanizmów dodanych w Javie 8. Obsługuje wiele framework'ów do Javy, oraz inne języki programowania, m.in. języki do tworzenia stron internetowych. Społeczność użytkowników ciągle tworzą plug-iny do tego środowiska, co pozwala na rozszerzenie ilości języków programowania dostępnego w IntelliJ IDEA. Dostępne na Windows, Linux, Mac OS X i wielu innych systemach operacyjnych</li></ul> <div class="mw-heading mw-heading3"><h3 id="Co_wybrać?"><span id="Co_wybra.C4.87.3F"></span>Co wybrać?</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=31" title="Edytuj sekcję: Co wybrać?"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Na to pytanie musisz odpowiedzieć sobie sam. Prawdopodobnie najlepszym wyjściem jest dla Ciebie zainstalowanie wszystkich dostępnych w Twoim przypadku środowisk, stworzenie aplikacji, dwóch w każdym z nich oraz samodzielny wybór. Poeksperymentuj, sprawdź, które z narzędzi bardziej odpowiada Twoim wymaganiom, w którym przyjemniej i milej Ci się programuje, które bardziej przypadnie Ci do gustu. </p><p>Być może zaczniesz używać obydwu narzędzi w zależności od tego jaki projekt i z użyciem jakich bibliotek będziesz tworzył. Powodzenia! </p> <div class="mw-heading mw-heading2"><h2 id="Bibliografia">Bibliografia</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=32" title="Edytuj sekcję: Bibliografia"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://help.ubuntu.com/community/Java">Ubuntu Documentation > Community Documentation > Java</a></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://openjdk.java.net/">Strona główna Openjdk, otwartej implementacji Javy</a></span> </li> </ol> <div class="mw-heading mw-heading2"><h2 id="Warto_przeczytać"><span id="Warto_przeczyta.C4.87"></span>Warto przeczytać</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=33" title="Edytuj sekcję: Warto przeczytać"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><i><a rel="nofollow" class="external text" href="http://www.gnu.org/philosophy/java-trap.pl.html">Wolne, lecz w okowach - pułapka Javy</a></i> - artykuł Richarda Stallmana z dn.2004-04-12</li></ul> <ul><li><i><a rel="nofollow" class="external text" href="http://hedera.linuxnews.pl/_news/2005/11/04/_long/3537.html">95% wolnej Javy</a></i> - artykuł na łamach serwisu linuxnews.pl z dn. 2005-11-04</li></ul> <ul><li><i><a rel="nofollow" class="external text" href="http://hedera.linuxnews.pl/_news/2006/11/13/_long/4163.html">Wolna Java od Suna!</a></i> - artykuł na łamach serwisu linuxnews.pl z dn. 2006-11-13</li></ul> <div class="mw-heading mw-heading2"><h2 id="Linki_zewnętrzne"><span id="Linki_zewn.C4.99trzne"></span>Linki zewnętrzne</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Java&action=edit&section=34" title="Edytuj sekcję: Linki zewnętrzne"><span>edytuj</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external free" href="http://java.sun.com/">http://java.sun.com/</a> - oficjalna witryna Suna dotycząca języka i środowiska Java</li> <li><a rel="nofollow" class="external free" href="http://math.hws.edu/javanotes/">http://math.hws.edu/javanotes/</a> - bardzo dobry kurs programowania w Javie od podstaw</li> <li><a rel="nofollow" class="external free" href="http://java.oz.pl/">http://java.oz.pl/</a> - kurs programowania w Javie - po polsku i od podstaw</li> <li><a rel="nofollow" class="external free" href="http://arturt.republika.pl/java/">http://arturt.republika.pl/java/</a> - kurs programowania w Javie po polsku</li> <li><a rel="nofollow" class="external free" href="http://4programmers.net/Java/Podstawy_Javy">http://4programmers.net/Java/Podstawy_Javy</a> - podstawowy kurs java po polsku</li> <li><a rel="nofollow" class="external text" href="http://www.programowanieobiektowe.pl/java_obiekty_refleksyjne.php">Java. Obiekty refleksyjne</a> - artykuł wyjaśniający co to są refleksje i jak się je stosuje w Javie</li> <li><a rel="nofollow" class="external free" href="http://jdn.pl/">http://jdn.pl/</a> - Java Developers Network - portal programistów</li> <li><a rel="nofollow" class="external text" href="http://wazniak.mimuw.edu.pl/index.php?title=Programowanie_obiektowe">Kurs programowania obiektowego w Javie</a> - Kurs z Uniwersytetu Warszawskiego</li> <li><a rel="nofollow" class="external text" href="http://wazniak.mimuw.edu.pl/index.php?title=Zaawansowane_projektowanie_obiektowe">Zaawansowany kurs programowania obiektowego w Javie</a> - Druga część kursu z Uniwersytetu Warszawskiego</li> <li><a rel="nofollow" class="external text" href="http://docs.oracle.com/javase/tutorial/">Java SE Tutorial na oracle.com</a></li> <li><a rel="nofollow" class="external text" href="http://docs.oracle.com/javase/7/docs/api/">Dokumentacja Javy</a></li> <li><a rel="nofollow" class="external text" href="http://www.meshplex.org/wiki/Java/Introduction_to_Java">Full Java Tutorial</a></li></ul></div></div> <!-- NewPP limit report Parsed by mw‐api‐int.codfw.canary‐589c5ff56d‐zlmkg Cached time: 20241121122904 Cache expiry: 2592000 Reduced expiry: false Complications: [show‐toc] CPU time usage: 0.610 seconds Real time usage: 0.672 seconds Preprocessor visited node count: 1084/1000000 Post‐expand include size: 4249/2097152 bytes Template argument size: 1285/2097152 bytes Highest expansion depth: 12/100 Expensive parser function count: 11/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 57368/5000000 bytes Lua time usage: 0.446/10.000 seconds Lua memory usage: 3419926/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 577.046 1 -total 90.93% 524.700 1 Szablon:Status 9.03% 52.121 1 Szablon:Wikipedia 8.70% 50.186 1 Szablon:Projekt_siostrzany 2.45% 14.165 1 Szablon:Tabelka 2.41% 13.885 1 Szablon:DivLinia 2.02% 11.632 2 Szablon:Komórka 1.74% 10.016 7 Szablon:Dopasuj 1.50% 8.673 1 Szablon:Ikona 1.44% 8.296 1 Szablon:Plik --> <!-- Saved in parser cache with key plwikibooks:pcache:idhash:1829-0!canonical and timestamp 20241121122904 and revision id 488045. Rendering was triggered because: api-parse --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Źródło: „<a dir="ltr" href="https://pl.wikibooks.org/w/index.php?title=Java&oldid=488045">https://pl.wikibooks.org/w/index.php?title=Java&oldid=488045</a>”</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Specjalna:Kategorie" title="Specjalna:Kategorie">Kategorie</a>: <ul><li><a href="/wiki/Kategoria:Ksi%C4%85%C5%BCki_na_uko%C5%84czeniu" title="Kategoria:Książki na ukończeniu">Książki na ukończeniu</a></li><li><a href="/wiki/Kategoria:Spis_alfabetyczny/J" title="Kategoria:Spis alfabetyczny/J">Spis alfabetyczny/J</a></li><li><a href="/wiki/Kategoria:Programowanie" title="Kategoria:Programowanie">Programowanie</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Ukryta kategoria: <ul><li><a href="/wiki/Kategoria:Wszystkie_ksi%C4%85%C5%BCki" title="Kategoria:Wszystkie książki">Wszystkie książki</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> Tę stronę ostatnio edytowano 17 mar 2024, 22:50.</li> <li id="footer-info-copyright">Tekst udostępniany na licencji <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.pl">Creative Commons: uznanie autorstwa, na tych samych warunkach</a>, z możliwością obowiązywania dodatkowych ograniczeń. Zobacz szczegółowe informacje o <a class="external text" href="https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/pl">warunkach korzystania</a>.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Polityka prywatności</a></li> <li id="footer-places-about"><a href="/wiki/Wikibooks:O_Wikibooks">O Wikibooks</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikibooks:Informacje_prawne">Informacje prawne</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Powszechne Zasady Postępowania</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Dla deweloperów</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/pl.wikibooks.org">Statystyki</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Oświadczenie o ciasteczkach</a></li> <li id="footer-places-mobileview"><a href="//pl.m.wikibooks.org/w/index.php?title=Java&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Wersja mobilna</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-7549f655f9-sbqkq","wgBackendResponseTime":173,"wgPageParseReport":{"limitreport":{"cputime":"0.610","walltime":"0.672","ppvisitednodes":{"value":1084,"limit":1000000},"postexpandincludesize":{"value":4249,"limit":2097152},"templateargumentsize":{"value":1285,"limit":2097152},"expansiondepth":{"value":12,"limit":100},"expensivefunctioncount":{"value":11,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":57368,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 577.046 1 -total"," 90.93% 524.700 1 Szablon:Status"," 9.03% 52.121 1 Szablon:Wikipedia"," 8.70% 50.186 1 Szablon:Projekt_siostrzany"," 2.45% 14.165 1 Szablon:Tabelka"," 2.41% 13.885 1 Szablon:DivLinia"," 2.02% 11.632 2 Szablon:Komórka"," 1.74% 10.016 7 Szablon:Dopasuj"," 1.50% 8.673 1 Szablon:Ikona"," 1.44% 8.296 1 Szablon:Plik"]},"scribunto":{"limitreport-timeusage":{"value":"0.446","limit":"10.000"},"limitreport-memusage":{"value":3419926,"limit":52428800}},"cachereport":{"origin":"mw-api-int.codfw.canary-589c5ff56d-zlmkg","timestamp":"20241121122904","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Java","url":"https:\/\/pl.wikibooks.org\/wiki\/Java","sameAs":"http:\/\/www.wikidata.org\/entity\/Q251","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q251","author":{"@type":"Organization","name":"Wsp\u00f3\u0142tw\u00f3rcy projekt\u00f3w Fundacji Wikimedia"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2005-05-23T23:12:44Z","dateModified":"2024-03-17T21:50:36Z","headline":"obiektowy j\u0119zyk programowania"}</script> </body> </html>