Odkryj nieznane możliwości Javy
* Sieci semantyczne i neuronowe
* Przetwarzanie grafiki i multimediów
* Obliczenia naukowe
Java, mimo stosunkowo krótkiej obecności na rynku, stała się jednym z najpopularniejszych języków programowania. Codziennie korzystają z niej setki tysięcy programistów z całego świata. Największe korporacje świata za jej pomocą budują systemy informatyczne przetwarzające potężne porcje danych. Aplikacje bazodanowe, serwlety i aplety to najbardziej znane zastosowania Javy, jednak nie jedyne. W sieci dostępna jest ogromna ilość bibliotek tworzonych przez pasjonatów, którzy wykorzystują Javę do odmiennych celów, takich jak przetwarzanie grafiki, modelowanie sieci neuronowych, przeprowadzanie złożonych obliczeń i wielu innych zadań.
Dzięki książce "Java. Programowanie, biblioteki open-source i pomysły na nowe projekty" poznasz mniej znane zastosowania Javy. Dowiesz się, jak za pomocą bibliotek dostępnych na licencji open-source tworzyć ciekawe projekty i pisać nietypowe aplikacje. Nauczysz się przetwarzać pliki XML i HTML, obrabiać i generować grafikę a także wyświetlać pliki multimedialne. Przeczytasz o sieciach semantycznych i neuronowych, odczytywaniu kanałów RSS i sterowaniu urządzeniami podłączonymi do komputera.
* Nieznane funkcje standardowego API Javy
* Przetwarzanie łańcuchów tekstowych
* Analiza plików XML i HTML
* Stosowanie RDF w projektach
* Czytanie kanałów RSS
* Obliczenia o dowolnej precyzji
* Realizacja algorytmów genetycznych
* Symulowanie sieci neuronowych
* Generowanie plików SVG
* Współpraca z interfejsem MIDI
Jeśli lubisz eksperymentować z językami programowania,
ta książka będzie dla Ciebie doskonałym źródłem inspiracji.
Kompletne i niezastąpione źródło wiedzy dla doświadczonych programistów
* Kolejne wydanie doskonałego przewodnika po zaawansowanych możliwościach Javy
* Wszystkie kody źródłowe w książce zaktualizowane do J2SE 5.0
* Szczegółowe omówienie wielowątkowości, kolekcji, programowania aplikacji sieciowych i bazodanowych, bezpieczeństwa i internacjonalizacji aplikacji, obiektów rozproszonych i języka XML
Kolejne już wydanie przewodnika opisującego zaawansowane i nieznane właściwości języka Java, tym razem w wersji 5.0, to kompendium wiedzy dla wszystkich programistów zamierzających tworzyć rozbudowane aplikacje. Nowa wersja języka Java to nie tylko nowy numer -- to przede wszystkim ogromna ilość nowych funkcji i możliwości, klas i obiektów. W JDK 5.0 wprowadzono nowe mechanizmy obsługi wątków i kolekcji, rozszerzono możliwości biblioteki Swing i klas wykorzystywanych do tworzenia aplikacji bazodanowych i sieciowych. "Java 2. Techniki zaawansowane. Wydanie II" przedstawia i opisuje wszystkie te nowości.
Wszystkie przykładowe programy zostały zaktualizowane do najnowszej wersji Javy i przedstawiają praktyczne rozwiązania rzeczywistych problemów, z jakimi może spotkać się twórca aplikacji w języku Java.
Książka zawiera wiele nowych podrozdziałów poświęconych nowościom wprowadzonym w J2SE 5.0. Dokładnie i na przykładach opisuje zagadnienia związane z wielowątkowością, kolekcjami, metadanymi, stosowaniem języka XML, komunikacją z bazami danych i wieloma innymi elementami zaawansowanego programowania w Javie.
* Aplikacje wielowątkowe
* Kolekcje i operacje na nich
* Połączenia sieciowe
* Interfejs JDBC i LDAP
* Aplikacje rozproszone
* Technologia CORBA
* Zaawansowane możliwości bibliotek Swing i AWT
* Technologia JavaBeans
* Bezpieczeństwo aplikacji
* Internacjonalizacja
* Korzystanie z języka XML
Jeśli zamierzasz wykorzystać Javę w złożonym projekcie informatycznym, ta książka będzie dla Ciebie niezastąpiona.
Umiesz programować w Perlu, lecz czujesz pewien niedosyt? Pracujesz nad większym projektem niż zazwyczaj i jesteś zagubiony? A może chciałbyś dodać do swojej aplikacji efektowny interfejs użytkownika, bardziej zaawansowany mechanizm przechwytywania błędów lub obsługę sieci i nie wiesz jak to zrobić?
Ta książka pomoże Ci stać się lepszym programistą bez względu na to, czy Twoja znajomość Perla jest powierzchowna, czy dogłębna. Nauczysz się zaawansowanych technik przygotowywania programów w Perlu o jakości produkcyjnej. Poznasz metody przetwarzania danych i używania obiektów, które wcześniej mogły wydawać Ci się czarną magią. Książka przedstawia szerokie zastosowania Perla: od sieci, baz danych, po interfejsy użytkownika. Znajdziesz w niej także opis wewnętrznych mechanizmów języka umożliwiających tworzenie wydajniejszych aplikacji oraz łączenie Perla z językiem C.
Do najważniejszych tematów poruszanych w książce należą:
* Praktyczne zastosowania pakietów i klas (programowanie obiektowe)
* Złożone struktury danych
* Trwałość danych (np. bazy danych)
* Sieci
* Interfejsy graficzne budowane za pomocą pakietu Tk
* Interakcja z funkcjami języka C
* Osadzanie i rozszerzanie interpretera Perla
* Wybrane aspekty wewnętrznych mechanizmów Perla
W książce przystępnie wytłumaczono wszystkie zagadnienia związane z Perlem, o których zapewne chciałbyś wiedzieć więcej: odwołania, przechwytywanie błędów operatorem eval, nieblokujące operacje wejścia/wyjścia, zasadność stosowania domknięć oraz dowiązania z użyciem mechanizmu tie. Jej lektura spowoduje, że poczujesz się prawdziwym hakerem -- mistrzem Perla.
"Nieprzeciętny tekst i najbardziej zaawansowana książka o Perlu, jaką napisano. Autor -- specjalista -- objaśnia trudne koncepcje w sposób klarowny i kompletny."
Jon Orwant, redaktor The Perl Journal
Perl to uniwersalny, wygodny i niezwykle elastyczny język programowania. Jego rozwój, wspierany przez rzeszę programistów, doprowadził do stworzenia narzędzia o ogromnych możliwościach dostępnego dla prawie wszystkich systemów operacyjnych. Jest to język wyjątkowy, gdyż pozwala programiście na wybór własnego stylu pisania kodu, nie narzucając "jedynie słusznych" rozwiązań. Dzięki tej zalecie Perl cieszy się wielką popularnością wśród osób nie zajmujących się zawodowo programowaniem (np. administratorów czy webmasterów). Kilka tysięcy darmowych modułów dodatkowo poszerza potencjał Perla.
Książka "Perl. Od podstaw" przedstawia szeroki zakres zastosowań tego języka. Nauczysz się z niej instalować Perla w różnych systemach operacyjnych, poznasz podstawowe konstrukcje języka: instrukcje, wyrażenia regularne i moduły, dowiesz się jak korzystać z baz danych za pomocą Perla i jak pisać skrypty CGI.
Dla kogo adresowana jest ta książka?
Książka przeznaczona jest dla wszystkich, którzy chcą poznać język Perl. Jeśli masz już doświadczenie programistyczne, będzie Ci łatwiej ją czytać; jeśli Perl jest Twoim pierwszym językiem programowania, bez trudu przebrniesz przez tą lekturę.
Książka zawiera:
* Pełen kurs języka Perl (zarówno dla Windows jak i dla Uniksa)
* Opis korzystania z dodatkowych modułów dostępnych w sieci
* Opis składni Perla
* Sposoby wykorzystania plików i baz danych w Perlu
* Omówienie programowania skryptów CGI
* Wykorzystanie Perla jako języka zorientowanego obiektowo
Bądź na bieżąco z najnowszymi narzędziami i technikami programowania
* Wykorzystaj możliwości szablonów
* Połącz skrypty Perla z programami napisanymi w innych językach programowania
* Przetestuj kod i popraw wydajność projektu
Perl, jeden z pierwszych języków skryptowych służących do dynamicznego generowania zawartości witryn WWW, nie traci popularności mimo dość sędziwego wieku. Ciągle wzrasta zainteresowanie tym językiem, co pewien czas powstają kolejne jego wersje. W sieci funkcjonują tysiące witryn poświęconych programowaniu w Perlu, jednak podczas pracy nad rozbudowaną aplikacją nie zawsze znajdujemy czas na poszukiwanie niezbędnych informacji. Zgromadzenie w jednym tomie opisów technik stosowanych przez doświadczonych programistów pozwoliłoby znacznie przyspieszyć pracę.
Książka "Perl. Zaawansowane programowanie. Wydanie II" to kompendium wiedzy dla wszystkich, którzy tworzą aplikacje w Perlu. Autor opisuje zmiany, jakie wprowadzono w Perlu w ciągu ostatnich lat, koncentrując się na technikach rozwiązywania konkretnych problemów, a nie na teoretycznych rozważaniach. Kładzie duży nacisk na możliwości stosowania gotowych kodów z witryn Comprehensive Perl Archive Network, w których zgromadzono setki przykładów wykorzystania Perla. Uczy efektywnej pracy i zachęca do stosowania zaawansowanych narzędzi i technik programistycznych.
* Techniki przetwarzania danych tekstowych
* Stosowanie szablonów
* Pobieranie wiadomości RSS
* Obsługa baz danych
* Korzystanie z kodowania Unicode
* Programowanie sterowane zdarzeniami
* Testowanie kodu i usuwanie błędów
* Łączenie kodu Perla z kodem C za pomocą modułu Inline
Odkryj magię Perla.
Zapraszamy do zapoznania się z prezentacją na temat ochrony arkusza kalkulacyjnego. Jest to temat omawiany podczas Kursu Excel w Cognity. Więcej informacji znajdą Państwo na stronie: http://www.cognity.pl/szkolenie-excel-podstawowy,s2,37.html
Kompletne i niezastąpione źródło wiedzy dla doświadczonych programistów
* Kolejne wydanie doskonałego przewodnika po zaawansowanych możliwościach Javy
* Wszystkie kody źródłowe w książce zaktualizowane do J2SE 5.0
* Szczegółowe omówienie wielowątkowości, kolekcji, programowania aplikacji sieciowych i bazodanowych, bezpieczeństwa i internacjonalizacji aplikacji, obiektów rozproszonych i języka XML
Kolejne już wydanie przewodnika opisującego zaawansowane i nieznane właściwości języka Java, tym razem w wersji 5.0, to kompendium wiedzy dla wszystkich programistów zamierzających tworzyć rozbudowane aplikacje. Nowa wersja języka Java to nie tylko nowy numer -- to przede wszystkim ogromna ilość nowych funkcji i możliwości, klas i obiektów. W JDK 5.0 wprowadzono nowe mechanizmy obsługi wątków i kolekcji, rozszerzono możliwości biblioteki Swing i klas wykorzystywanych do tworzenia aplikacji bazodanowych i sieciowych. "Java 2. Techniki zaawansowane. Wydanie II" przedstawia i opisuje wszystkie te nowości.
Wszystkie przykładowe programy zostały zaktualizowane do najnowszej wersji Javy i przedstawiają praktyczne rozwiązania rzeczywistych problemów, z jakimi może spotkać się twórca aplikacji w języku Java.
Książka zawiera wiele nowych podrozdziałów poświęconych nowościom wprowadzonym w J2SE 5.0. Dokładnie i na przykładach opisuje zagadnienia związane z wielowątkowością, kolekcjami, metadanymi, stosowaniem języka XML, komunikacją z bazami danych i wieloma innymi elementami zaawansowanego programowania w Javie.
* Aplikacje wielowątkowe
* Kolekcje i operacje na nich
* Połączenia sieciowe
* Interfejs JDBC i LDAP
* Aplikacje rozproszone
* Technologia CORBA
* Zaawansowane możliwości bibliotek Swing i AWT
* Technologia JavaBeans
* Bezpieczeństwo aplikacji
* Internacjonalizacja
* Korzystanie z języka XML
Jeśli zamierzasz wykorzystać Javę w złożonym projekcie informatycznym, ta książka będzie dla Ciebie niezastąpiona.
Umiesz programować w Perlu, lecz czujesz pewien niedosyt? Pracujesz nad większym projektem niż zazwyczaj i jesteś zagubiony? A może chciałbyś dodać do swojej aplikacji efektowny interfejs użytkownika, bardziej zaawansowany mechanizm przechwytywania błędów lub obsługę sieci i nie wiesz jak to zrobić?
Ta książka pomoże Ci stać się lepszym programistą bez względu na to, czy Twoja znajomość Perla jest powierzchowna, czy dogłębna. Nauczysz się zaawansowanych technik przygotowywania programów w Perlu o jakości produkcyjnej. Poznasz metody przetwarzania danych i używania obiektów, które wcześniej mogły wydawać Ci się czarną magią. Książka przedstawia szerokie zastosowania Perla: od sieci, baz danych, po interfejsy użytkownika. Znajdziesz w niej także opis wewnętrznych mechanizmów języka umożliwiających tworzenie wydajniejszych aplikacji oraz łączenie Perla z językiem C.
Do najważniejszych tematów poruszanych w książce należą:
* Praktyczne zastosowania pakietów i klas (programowanie obiektowe)
* Złożone struktury danych
* Trwałość danych (np. bazy danych)
* Sieci
* Interfejsy graficzne budowane za pomocą pakietu Tk
* Interakcja z funkcjami języka C
* Osadzanie i rozszerzanie interpretera Perla
* Wybrane aspekty wewnętrznych mechanizmów Perla
W książce przystępnie wytłumaczono wszystkie zagadnienia związane z Perlem, o których zapewne chciałbyś wiedzieć więcej: odwołania, przechwytywanie błędów operatorem eval, nieblokujące operacje wejścia/wyjścia, zasadność stosowania domknięć oraz dowiązania z użyciem mechanizmu tie. Jej lektura spowoduje, że poczujesz się prawdziwym hakerem -- mistrzem Perla.
"Nieprzeciętny tekst i najbardziej zaawansowana książka o Perlu, jaką napisano. Autor -- specjalista -- objaśnia trudne koncepcje w sposób klarowny i kompletny."
Jon Orwant, redaktor The Perl Journal
Perl to uniwersalny, wygodny i niezwykle elastyczny język programowania. Jego rozwój, wspierany przez rzeszę programistów, doprowadził do stworzenia narzędzia o ogromnych możliwościach dostępnego dla prawie wszystkich systemów operacyjnych. Jest to język wyjątkowy, gdyż pozwala programiście na wybór własnego stylu pisania kodu, nie narzucając "jedynie słusznych" rozwiązań. Dzięki tej zalecie Perl cieszy się wielką popularnością wśród osób nie zajmujących się zawodowo programowaniem (np. administratorów czy webmasterów). Kilka tysięcy darmowych modułów dodatkowo poszerza potencjał Perla.
Książka "Perl. Od podstaw" przedstawia szeroki zakres zastosowań tego języka. Nauczysz się z niej instalować Perla w różnych systemach operacyjnych, poznasz podstawowe konstrukcje języka: instrukcje, wyrażenia regularne i moduły, dowiesz się jak korzystać z baz danych za pomocą Perla i jak pisać skrypty CGI.
Dla kogo adresowana jest ta książka?
Książka przeznaczona jest dla wszystkich, którzy chcą poznać język Perl. Jeśli masz już doświadczenie programistyczne, będzie Ci łatwiej ją czytać; jeśli Perl jest Twoim pierwszym językiem programowania, bez trudu przebrniesz przez tą lekturę.
Książka zawiera:
* Pełen kurs języka Perl (zarówno dla Windows jak i dla Uniksa)
* Opis korzystania z dodatkowych modułów dostępnych w sieci
* Opis składni Perla
* Sposoby wykorzystania plików i baz danych w Perlu
* Omówienie programowania skryptów CGI
* Wykorzystanie Perla jako języka zorientowanego obiektowo
Bądź na bieżąco z najnowszymi narzędziami i technikami programowania
* Wykorzystaj możliwości szablonów
* Połącz skrypty Perla z programami napisanymi w innych językach programowania
* Przetestuj kod i popraw wydajność projektu
Perl, jeden z pierwszych języków skryptowych służących do dynamicznego generowania zawartości witryn WWW, nie traci popularności mimo dość sędziwego wieku. Ciągle wzrasta zainteresowanie tym językiem, co pewien czas powstają kolejne jego wersje. W sieci funkcjonują tysiące witryn poświęconych programowaniu w Perlu, jednak podczas pracy nad rozbudowaną aplikacją nie zawsze znajdujemy czas na poszukiwanie niezbędnych informacji. Zgromadzenie w jednym tomie opisów technik stosowanych przez doświadczonych programistów pozwoliłoby znacznie przyspieszyć pracę.
Książka "Perl. Zaawansowane programowanie. Wydanie II" to kompendium wiedzy dla wszystkich, którzy tworzą aplikacje w Perlu. Autor opisuje zmiany, jakie wprowadzono w Perlu w ciągu ostatnich lat, koncentrując się na technikach rozwiązywania konkretnych problemów, a nie na teoretycznych rozważaniach. Kładzie duży nacisk na możliwości stosowania gotowych kodów z witryn Comprehensive Perl Archive Network, w których zgromadzono setki przykładów wykorzystania Perla. Uczy efektywnej pracy i zachęca do stosowania zaawansowanych narzędzi i technik programistycznych.
* Techniki przetwarzania danych tekstowych
* Stosowanie szablonów
* Pobieranie wiadomości RSS
* Obsługa baz danych
* Korzystanie z kodowania Unicode
* Programowanie sterowane zdarzeniami
* Testowanie kodu i usuwanie błędów
* Łączenie kodu Perla z kodem C za pomocą modułu Inline
Odkryj magię Perla.
Zapraszamy do zapoznania się z prezentacją na temat ochrony arkusza kalkulacyjnego. Jest to temat omawiany podczas Kursu Excel w Cognity. Więcej informacji znajdą Państwo na stronie: http://www.cognity.pl/szkolenie-excel-podstawowy,s2,37.html
Przystępne, a zarazem kompletne wprowadzanie do języka programowania, który zmienił sposób myślenia wielu programistów. W ostatnich latach Java wyprzedziła pod względem popularności inne języki, takie jak C++ i Visual Basic, spełniając większość wymagań stawianych przez twórców aplikacji i stała się najważniejszym językiem nowego pokolenia programistów -- w szczególności projektantów aplikacji działających w Internecie.
Książka pozwala na przyswojenie podstaw języka Java. Dzięki niej poznasz sam język, biblioteki klas, techniki programistyczne i idiomy. „Java. Wprowadzenie” zawiera wiele łatwych w zrozumieniu przykładów wraz z kodem źródłowym. Pozwolą Ci one zapoznać się z wieloma cechami, funkcjami i interfejsami programistycznymi Javy.
Załączony CD-ROM poza przykładami omawianymi w książce zawiera także pełną wersję J2SE SDK 1.4, środowisko NetBeans, narzędzie make (Ant) i serwer aplikacji Tomcat z projektu Jakarta oraz BeanShell, prosty, darmowy język skryptowy Javy napisany przez jednego z autorów tej książki, Pata Niemeyera.
Tematy omówione w tej książce dotyczą:
* technik programowania zorientowanego obiektowo,
* interfejsów programistycznych serwletów i aplikacji internetowych,
* asercji języka i obsługi wyjątków,
* pakietu NIO umożliwiającego tworzenie złożonych systemów wejścia-wyjścia,
* programowania wykorzystującego wątki,
* komponentów Swing służących do budowy okienkowego interfejsu użytkownika
* nowych interfejsów programistycznych wersji 1.4: wyrażeń regularnych, właściwości i dzienników zdarzeń,
* JavaBeans i darmowego środowiska NetBeans,
* Java Plug-in, podpisywaniu apletów i Java Web Start,
* XML (omówiono: SAX, DOM, DTD, XSLT)
Przejdź na wyższy poziom programowania dzięki dwóm "guru" Javy: Herbowi Schildtowi i Jamesowi Holmesowi. Połączenie ich wiedzy pozwoli Ci poznać wiele sekretów i sztuczek wykorzystywanych przez profesjonalistów. W książce autorzy przedstawiają przykłady użytecznych aplikacji oraz towarzyszące im opisy użytych technologii. Prezentowane przykłady możesz wykorzystać w swojej codziennej pracy. Począwszy od interpreterów języka, agentów internetowych i podsystemów e-mail, skończywszy na analizatorach wyrażeń, narzędziach statystycznych i apletach finansowych -- wszystkie aplikacje są gotowe do użycia. Można je też dowolnie modyfikować i rozszerzać.
W książce znajdziesz:
* Omówienie zalet języka Java,
* Tworzenie analizatora wyrażeń numerycznych,
* Tworzenie agenta przeszukującego internet,
* Projektowanie i implementacja interpretera języka programowania,
* Wykonanie funkcjonalnego systemu pocztowego,
* Konstruowanie programu do pobierania danych z internetu z możliwością pobierania fragmentów stron,
* Wykonanie narzędzi statystycznych obliczających średnia, medianę, modalną, odchylenie standardowe, itp.
* Wykonanie apletów i serwletów finansowych obliczających równe raty pożyczki, przyszłą wartość inwestycji, kwotę emerytury, itp.
* Prześledzenie różnych technik wyszukiwania bazujących na sztucznej inteligencji,
* Zapoznanie się z możliwością przeglądania stron HTML-a w Javie.
O autorach:
Herb Schildt jest autorytetem w sprawach języków C, C++, Java i C#, a także doskonałym programistą systemu Windows.
[więcej...]
James Holmes jest konsultantem do spraw tworzenia programowania oraz aplikacji serwerowych w środowiskach biznesowych.
[więcej...]
Jeżeli poznałeś już podstawy Javy, to czas na następny krok.
* Uwolnij siłę drzemiącą w Javie i w jej bibliotekach.
* Niezwykle różnorodne przykłady praktycznych aplikacji.
* Cenny kod źródłowy do wykorzystania we własnych projektach.
Popularność języka Java stale rośnie. Programiści z całego świata wykorzystują go do tworzenia zarówno prostych aplikacji, jak i złożonych systemów. Podstawowa zaleta Javy -- przenośność kodu -- powoduje, że programy napisane w Javie możemy spotkać nie tylko na dyskach komputerów i serwerów, ale również w telefonach komórkowych i innych urządzeniach mobilnych. Java jest ciągle rozwijana -- w każdej kolejnej wersji pojawiają się nowe elementy, ułatwiające realizację coraz bardziej złożonych zagadnień programistycznych.
"Java. Kompendium programisty" to doskonały przewodnik po najnowszym wcieleniu języka Java, noszącym oznaczenie J2SE5. Każdy twórca aplikacji w Javie znajdzie tu niezbędne do swojej pracy informacje. Autor -- Herb Schildt, znany z wielu bestsellerowych pozycji dotyczących programowania w Javie i C++ -- opisuje wszystkie elementy języka Java w wersji 5. Typy danych, metody, konstrukcje, podstawowe biblioteki i techniki programistyczne -- wszystko zostało opisane prostym i zrozumiałym językiem oraz zilustrowane przykładami.
* Historia języka Java
* Podstawowe założenia programowania obiektowego
* Typy danych i zmienne
* Operatory
* Klasy, metody, pakiety i interfejsy
* Wątki i wyjątki
* Elementy bibliotek Javy
* Operacje wejścia i wyjścia
* Programowanie sieciowe
* Biblioteki AWT i Swing
* JavaBeans i serwlety
W tym podręczniku znajdziesz odpowiedzi na wszystkie pytania związane z Javą.
O autorze:
Herb Schildt jest autorytetem w sprawach języków C, C++, Java i C#, a także doskonałym programistą systemu Windows.
[więcej...]
Zwięzły przewodnik opisujący najczęściej używane instrukcje języka Java
* Naucz się kompilować i uruchamiać programy w Javie
* Poznaj najpopularniejsze polecenia tego języka
* Pisz programy działające na wielu platformach
Już od wielu lat Java jest jednym z najpopularniejszych języków programowania, a znający ją programiści są poszukiwani i cenieni na rynku pracy. Jej atrakcyjność wynika głównie z tego, że kod napisany w tym języku można uruchamiać na wielu platformach, włączając w to różne systemy operacyjne, a także urządzenia przenośne, na przykład telefony komórkowe. Prosty jest także dostęp do wielu narzędzi oraz bezpłatnych bibliotek ułatwiających programowanie w Javie. Ponadto język ten otwiera wielkie możliwości w zakresie tworzenia aplikacji sieciowych.
"Java. Rozmówki" przedstawia skuteczne rozwiązania najczęściej występujących problemów i pomoże Ci błyskawicznie rozpocząć programowanie w tym języku. Dowiesz się, jak kompilować i uruchamiać programy w Javie. Nauczysz się manipulować ciągami, strukturami danych i datami oraz stosować wyrażenia regularne. Poznasz operacje wejścia i wyjścia, a także sposoby pracy z katalogami i plikami. Przeczytasz o aplikacjach sieciowych działających zarówno po stronie klienta, jak i po stronie serwera. Opanujesz efektywne techniki pracy z bazami danych i korzystanie z formatu XML.
* Kompilowanie i uruchamianie programów w Javie
* Współpraca ze środowiskiem
* Obsługa ciągów i liczb
* Korzystanie ze struktur danych
* Operacje wejścia i wyjścia
* Manipulowanie plikami i katalogami
* Praca z klientami i serwerami sieciowymi
* Komunikacja z bazami danych i używanie XML
* Programowanie wielowątkowe
Dzięki treściwym rozmówkom błyskawicznie poznasz praktyczne podstawy programowania w Javie.
Przystępny kurs programowania dla wszystkich
* Poznaj najpopularniejsze języki programowania
* Zorganizuj sobie pracę przy tworzeniu aplikacji
* Napisz własny program
* Przetestuj aplikacje i usuń błędy
Mimo dynamicznego rozwoju informatyki wśród większości użytkowników komputerów nadal istnieje przekonanie, że programowanie jest zajęciem dla wybrańców posiadających ogromną i niemal tajemną wiedzę. Tymczasem pisanie programów to umiejętność, którą może opanować każdy. Oczywiście nauka programowania wymaga poznania wielu zagadnień teoretycznych i praktycznych, ale nie wymaga od osoby uczącej się żadnych niezwykłych umiejętności. Każdy może poznać zasady pisania programów, zarówno dla celów hobbystycznych, jak i zawodowych.
Książka "Programowanie. Od podstaw" to podręcznik programowania przeznaczony dla osób, które dopiero rozpoczynają swoją komputerową przygodę. Zawiera uniwersalne wiadomości przydatne każdemu programiście niezależnie od tego, co i w jakim języku będzie tworzyć. Czytając ją, poznasz wady i zalety różnych języków programowania, sposoby realizacji typowych zadań programistycznych i metody testowania aplikacji. Dowiesz się, jak komputery przechowują informacje, jakie systemy liczbowe wykorzystuje się w programowaniu i jakie narzędzia będą Ci potrzebne podczas pracy. Zdobędziesz solidne podstawy, które pozwolą Ci na dalsze rozwijanie swoich umiejętności.
* Sposób interpretacji kodu źródłowego przez komputer
* System binarny i szesnastkowy
* Warsztat pracy programisty
* Komentarze w kodach programów
* Definiowanie zmiennych
* Instrukcje warunkowe
* Testowanie i usuwanie błędów
* Projektowanie interfejsów użytkownika
* Operacje na plikach
* Wykorzystywanie rejestru Windows
* Zarządzanie wersjami kodu
* Kompilacja
Przekonaj się, że programowanie nie jest trudne.
* Obszerny przewodnik po języku Java -- zaktualizowany dla wersji JDK 1.3
* Pełne omówienie środowiska programowania zorientowanego obiektowo oraz klas Swing
* Więcej przykładowch kodów przydatnych profesjonalnym programistom
* CD-ROM zawiera kod źródłowy wszystkich programów, J2SE w wersji 1.3, Forte™ -- Java Community Edition i wiele więcej!
Pięć wydań w USA, pierwsze wydanie w Polsce!
"Java 2. Podstawy” jest najlepszą książką dla programistów. Nie ma sobie równych pod względem ilości przekazanych informacji, a mimo to pozostaje bardzo czytelna. -- K. N. King, Computer Reviews
Programiści znajdą tu wszystko, czego potrzeba, aby wykorzystać potęgę języka Java… -- PC Week
"Java 2. Podstawy" dostarcza wszystkiego, czego potrzebujesz, aby ukończyć nawet najbardziej skomplikowane projekty. Dlatego właśnie ta książka przez pięć lat była międzynarodowym bestsellerem. "Java 2. Podstawy" omawia podstawy platformy Java 2 Standard Edition w wersji 1.3, zawiera pełny opis zorientowanego obiektowo środowiska programistycznego Javy, komponentów interfejsu użytkownika Swing i wiele, wiele więcej.
Piąta wydanie prezentuje wiele nowych, gotowych do zastosowania programów, z których zasłynęły poprzednie edycje tej książki: pojawiły się również nowe programy dotyczące mechanizmu odbicia oraz optymalizacji kodu. Szczegółowo wyjaśniono koncepcję klas wewnętrznych, funkcjonowanie proxy, obsługę wyjątków, techniki usuwania błędów, model zdarzeń Javy, interfejs wejścia/wyjścia oraz zarządzania plikami.
Kompendium dla programistów Javy, a w nim:
* Omówienie języka Java i tworzenia aplikacji w środowisku Forte(tm)
* Tworzenie aplikacji GUI przy pomocy nowych klas Swing
* Sposoby pisania klas proxy i klas wewnętrznych
* Korzystanie z modelu zdarzeń Javy
* Omówienie klas strumieni oraz mechanizmu zarządzania plikami
To idealna książka dla profesjonalnych programistów, którzy chcą nauczyć się Javy i wykorzystać ją w swojej pracy zawodowej. Zawiera CD-ROM z kodem źródłowy wszystkich przykładów, Forte ™ -- Java Community Edition (zintegrowane środowisko programistyczne Javy) oraz wersje testowe wielu innych użytecznych programów.
JavaScript jest językiem sieci. Jest to język intuicyjny i łatwy do przyswojenia. Jego wielką zaletą jest dostępność w większości nowoczesnych przeglądarek WWW. Dzięki JavaScriptowi możemy tworzyć dynamiczne, interaktywne strony WWW. Język ten najczęściej wykorzystywany jest do sprawdzania poprawności formularzy, tworzenia dynamicznych menu, a także do programowania gier. Jednak możliwości tego języka są znacznie większe. Trudno powiedzieć, czy istnieje chociaż jedna komercyjna witryna WWW, która nie zawiera w ogóle JavaScriptu.
Książka "JavaScript. Zaawansowane programowanie" zawiera wszechstronny opis języka JavaScript, jego składni i zastosowań. Na początek zaprezentujemy najnowsze przeglądarki i standardy stosowane w WWW, a następnie przedstawimy praktyczne techniki w postaci krótkich przykładów oraz bardziej szczegółowych i złożonych analiz konkretnych rozwiązań. Niniejsza książka koncentruje się wyłącznie na wykorzystaniu JavaScriptu w przeglądarkach WWW, ponieważ głównie w nich język ten jest stosowany.
Dla kogo jest ta książka?
Dla każdego, komu potrzebny jest JavaScript do tworzenia aplikacji WWW uruchamianych po stronie klienta. Czytelnikom znającym już język JavaScript, książka ta może posłużyć jako aktualny, zaawansowany poradnik; natomiast tym, którzy znają już inny język programowania, pozwoli opanować JavaScript jako nową umiejętność.
Co opisuje ta książka?
* Podstawowe programowanie w JavaScripcie
* Wykorzystanie w skryptach obiektów przeglądarek
* Pracę z multimediami
* Standardy WWW, w tym XML, CSS i W3C DOM
* Dynamiczny HTML
* Techniki uruchamiania skryptów
* Wyrażenia regularne i walidację formularzy
* Analizę przykładów zastosowań praktycznych
* Propozycja ECMAScript Edition 4
Naszym celem jest pomagać Czytelnikom w osiągnięciu sukcesu, dzieląc się wiedzą doświadczonych programistów na każdym etapie Waszych karier.
Profesjonalny przewodnik po języku Perl
Ten kompletny przewodnik po Perlu szybko i wygodnie dostarcza doświadczonym programistom odpowiednich technik i ilustrujących je praktycznych przykładów kodu. Lektura tej książki pozwoli Ci najpierw rozwinąć swoje dotychczasowe umiejętności, a następnie zgłębić tajniki podstawowych technik programowania w Perlu. Książka rozpoczyna się opisem podstawowej składni języka, przechodzi później do obiektów, struktur danych i zasad przetwarzania tekstu. Następnie wyjaśnia, jak korzystać z dostarczonych przez Perl narzędzi umożliwiających pracę z plikami, działanie programów w sieci czy współpracę z relacyjnymi bazami danych. Na koniec pokazuje, jak wykorzystać pełnię możliwości Perla podczas tworzenia aplikacji WWW - zarówno prostych skryptów CGI, jak i w pełni zaawansowanych narzędzi obsługujących witryny WWW.
Opisano między innymi:
* Typy danych i podstawowe funkcje Perla
* Zasady pisania i korzystania z modułów Perla
* Sposoby korzystania z plików tekstowych i plików DBM
* Interfejs DBI pozwalający na korzystanie z baz danych i integrowanie baz danych ze stronami WWW
* Programy CGI, moduły mod_perl dla serwera Apache, cookie protokołu HTTP oraz szablony HTML/Perla
* Mason: oparty na Perlu system tworzenia zaawansowanych witryn WWW
* Wykrywanie i usuwanie błędów, optymalizacja kodu oraz sprawy związane z bezpieczeństwem
Od wielu już lat programiści na całym świecie doceniają Perla za jego prostotę, wygodę i uniwersalną zdolność do rozwiązywania szerokiego zakresu problemów; począwszy od przetwarzania tekstu i administrowania systemem operacyjnym po komunikację z bazami danych i tworzenie stron WWW. Książka "Perl" dostarcza programistom wiedzy niezbędnej do tworzenia wszechstronnych, przejrzystych i bardzo wydajnych programów - niezależnie jakie będą zadania tworzonych przez niego aplikacji.
Wyczerpujące omówienie najpopularniejszego środowiskado tworzenia dynamicznych witryn WWW
* Poznaj zasady programowania w PHP5 i w pełni wykorzystaj jego nowe możliwości
* Zastosuj bazę danych jako zaplecze dla stron WWW
* Zaprojektuj i stwórz dynamiczną witrynę WWW za pomocą PHP i MySQL
O PHP i MySQL słyszał już chyba każdy, kto zajmuje się projektowaniem witryn WWW. Skrypty napisane w języku PHP i korzystające z bazy danych MySQL "napędzają" tysiące dynamicznych stron WWW -- sklepów, portali oraz aplikacji e-commerce. Duet PHP i MySQL to stabilne, wydajne i proste do opanowania środowisko o ogromnych możliwościach. Dostępne są nieodpłatnie, co jest jednym z głównych powodów ich popularności. Za ich pomocą można stworzyć zarówno proste wiadomości na stronie WWW, jak i rozbudowane systemy autoryzacji użytkowników, płatności elektronicznych, galerii i wiele innych aplikacji internetowych.
"PHP5 i MySQL. Biblia" to kompleksowe omówienie zagadnień związanych z tworzeniem witryn WWW z wykorzystaniem tych technologii. Przedstawia zasady programowania w języku PHP5 z uwzględnieniem reguł projektowania obiektowego. Opisuje bazę danych MySQL, język SQL oraz sposoby połączenia skryptów PHP z tabelami w bazie danych. Czytając ją, nauczysz się osadzać kod PHP w dokumentach HTML, korzystać z mechanizmów obsługi sesji oraz języka XML, korzystać z innych baz danych oraz zabezpieczać witryny WWW stworzone za pomocą PHP. Dowiesz się, jak zaimplementować obsługę wyjątków oraz jak usuwać błędy z kodu źródłowego. Napiszesz skrypty stanowiące komponenty rozbudowanego dynamicznego serwisu WWW, które z powodzeniem będziesz mógł wykorzystać w wielu swoich projektach.
* Typy danych, zmienne, polecenia i funkcje w PHP
* Operacje na tekstach, wartościach liczbowych i tablicach
* Administrowanie bazą MySQL
* Łączenie skryptów PHP z bazą danych
* Tworzenie elementów generowanych dynamicznie
* Programowanie obiektowe w PHP
* Mechanizmy obsługi sesji i plików cookie
* Korzystanie z biblioteki PEAR
* Obsługa wyjątków i usuwanie błędów z kodów źródłowych
* Korzystanie z baz danych PostgreSQL oraz Oracle
* Łączenie PHP z JavaScript i Javą
* Przetwarzanie plików XML i tworzenie usług sieciowych
* Generowanie grafiki za pomocą PHP
* Uwierzytelnianie użytkowników
W tej książce znajdziesz wszystko, czego potrzebujeszaby w pełni wykorzystać możliwości PHP i MySQL.
Przyspiesz tworzenie aplikacji w Javie
* Uprość określanie zależności pomiędzy klasami
* Zastosuj narzędzie Hibernate do usprawnienia komunikacji z bazami danych
* Wykorzystaj możliwości programowania aspektowego
Technologia J2EE miała w założeniu być prosta i szybka w użytkowaniu. Praktyka jednak okazała się daleka od teorii. Mozolne tworzenie aplikacji wykorzystujących dziesiątki interfejsów połączonych wzajemnymi zależnościami, setki deskryptorów wdrożenia oraz plików pomocniczych spowodowało, że zaczęto poszukiwać rozwiązań alternatywnych. Jednym z nich okazał się framework Spring, zyskujący coraz większą popularność wśród programistów Javy. Spring jest znacznie dużo prostszy od wielu alternatywnych rozwiązań J2EE, znacznie ułatwia testowanie aplikacji, i pozwala na usuwanie zależności z kodu oraz oddzielanie ich od serwera aplikacji. Spring umożliwia również wykorzystanie programowania aspektowego.
Książka "Spring. Zapiski programisty" to praktyczny przewodnik po możliwościach tego środowiska. Jeśli wolisz poznawać nowe zagadnienia w sposób praktyczny, a nie wertując setki stron zapełnionych teoretycznymi wywodami, to ta książka jest właśnie dla Ciebie. Znajdziesz w niej omówienie zagadnień związanych z samym Springiem, współpracującymi z nim narzędziami i sposobami wykorzystania ich w procesie tworzenia aplikacji J2EE -- począwszy do graficznego interfejsu użytkownika i interfejsu sieciowego, a skończywszy na dostępie do relacyjnych baz danych.
* Tworzenie klas z zastosowaniem zależności
* Budowanie interfejsu użytkownika
* Integrowanie JSF z frameworkiem Spring
* Dostęp do baz danych za pomocą JDBC
* Odwzorowanie baz danych na obiekty za pomocą Hibernaete
* Obsługa i zabezpieczanie transakcji
* Wysyłanie i odbieranie wiadomości e-mail
Jeśli poszukujesz wydajniejszych metod tworzenia aplikacji J2EE, wykorzystaj możliwości frameworka Spring. Dzięki tej książce poznasz je wszystkie.
* Przewodnik dla doświadczonych programistów omawiający zaawansowane możliwości platformy Java dla wersji JDK 1.3 i 1.4.
* Dostarcza wielu praktycznych przykładów kodu!
* Zawiera nowe bądź zaktualizowane omówienie: języka XML, problematyki bezpieczeństwa, programowania aplikacji sieciowych, wielowątkowości, kolekcji, zdalnych obiektów, interfejsu JDBC™, architektury komponentów JavaBeans™, biblioteki Swing i wielu innych zagadnień.
Przewodnik po zaawansowanych metodach programowania w Javie dla zaawansowanych programistów.
Książka ta dostarcza doświadczonym programistom rozwiązań niezbędnych do pełnego wykorzystania możliwości Javy. To praktyczny przewodnik ułatwiający rozwiązywanie nawet najbardziej złożonych problemów programistycznych. Dodatkowo zawiera zupełnie nowy rozdział poświęcony wykorzystaniu języka XML w programach pisanych w Javie oraz zaktualizowane omówienie wielu zaawansowanych możliwości tej platformy -- od kolekcji po metody macierzyste, od bezpieczeństwa po bibliotekę Swing.
Autorzy identyfikują problemy najczęściej napotykane przez doświadczonych programistów Javy i dostarczają przemyślanych rozwiązań zilustrowanych przykładami kodu, które uczyniły z tej książki prawdziwy bestseller. Dzięki niej ujrzysz w nowym świetle zagadnienia interfejsu ODBC™, tworzenia aplikacji sieciowych, wykorzystania zdalnych obiektów i wiele innych.
Najważniejsze informacje dla programistów Java:
* Zaktualizowane omówienie wielowątkowości, kolekcji i aplikacji sieciowych.
* Zmienione przedstawienie problematyki zdalnych obiektów.
* Nowe, zaawansowane techniki wykorzystania architektury komponentów JavaBeans™.
* Zaawansowane techniki tworzenia interfejsu użytkownika wykorzystujące biblioteki Swing i AWT.
Książka będzie dla Ciebie kolejnym krokiem w poznaniu możliwości Javy. Jest rozszerzeniem i doskonałym uzupełnieniem publikacji "Java 2. Postawy".
O autorach:
CAY S. HORSTMANN wykłada informatykę na uniwersytecie stanowym w San Jose. Napisał sześć książek o C++, Javie i programowaniu zorientowanym obiektowo. Jest redaktorem naczelnym bestselerowego cyklu Core Series, wydawnictwa Prentice Hall PTR.
GARY CORNELL zrobił doktorat na uniwersytecie Brown i współpracował z IBM Watson Labs. Jest autorem lub współautorem 20 książek oraz wielu artykułów, wydrukowanych w czasopismach komputerowych. Obecnie kieruje programem Modern Visual Programming na Uniwersytecie Connecticut.
Kompendium wiedzy dla profesjonalnych programistów serwisów internetowych.
Książka zawiera komplet informacji niezbędnych twórcom zaawansowanych aplikacji sieciowych i opisuje: HTML 4, Java Standard Edition 1.3, serwlety, JavaServer Pages i wiele innych technologii. "Serwisy internetowe. Programowanie" łączy te technologie pokazując, jak przy ich pomocy tworzyć profesjonalne systemy.
HTML 4: Dogłębny, praktyczny opis struktury dokumentu HTML, jego elementów, ramek i styli kaskadowych.
Java 2: Podstawy składni, projektowanie zorientowane obiektowo, aplety, tworzenie animacji, narzędzie Java PlugIn, tworzenie interfejsu użytkownika (Swing), Java 2D API, aplikacje wielowątkowe, programowanie sieciowe, korzystanie z baz danych i jeszcze więcej.
Technologie serwerowe Javy: Serwlety, JSP, XML, JDBC – fundamentalne technologie umożliwiające budowę aplikacji w Javie. Tematy zaawansowane dotyczą tworzenia własnych bibliotek znaczników JSP, łączenia serwletów z JSP (MVC), tworzenie puli połączeń do baz danych, SAX, DOM i XSLT. Dokładnie omówiono także HTTP 1.1.
JavaScript: Dynamiczne tworzenie zawartości stron WWW, śledzenie zachowania użytkownika, sprawdzanie poprawności danych w formularzach HTML. Dołączono podręczny skorowidz komend.
Pierwsze wydanie tej książki jest używane jako podręcznik na takich uczelniach jak MIT, Standford, UC Berkeley, UCLA, Princeton i John Hopkins. Książka, którą trzymasz w ręku, została zaktualizowana i uzupełniona o najnowsze technologie oraz towarzyszące im przykłady gotowego kodu.
* Światowy bestseller -- aktualne kompendium dla zaawansowanych
programistów serwisów WWW
* Dogłębny opis HTML 4, CSS, Javy 2, serwletów, JavaServer Pages i XML
* Przykłady kodu używanego przez profesjonalistów
Wykorzystaj w swoich projektach gotowe rozwiązania
* Przetwarzanie grafiki
* Operacje na plikach
* Komunikacja z bazami danych
PHP to jeden z najpopularniejszych języków wykorzystywanych do tworzenia dynamicznych witryn WWW. Od początku swojej obecności na rynku zyskał ogromne uznanie programistów. Jest dostępny nieodpłatnie i ma ogromne możliwości. Jego najnowsza wersja otworzyła przed twórcami aplikacji nowe horyzonty, oferując im wszystkie korzyści wynikające z programowania obiektowego. PHP jest dostępny dla większości popularnych systemów operacyjnych z rodziny Unix/Linux, Windows, Mac OS oraz Risc OS. Współpracuje też z wieloma serwerami HTTP, dzięki czemu jest niezwykle uniwersalny.
W książce "PHP. 101 praktycznych skryptów. Wydanie II" znajdziesz gotowe skrypty, dzięki którym zdecydowanie przyśpieszysz swoją pracę nad aplikacjami i serwisami internetowymi. To wydanie zostało tak zaktualizowane w stosunku do poprzedniego, że skrypty działają prawidłowo w najnowszej wersji języka PHP. Autor zapewnił także zgodność generowanych przez nie dokumentów HTML z obowiązującymi standardami tego języka. Każdy ze skryptów możesz po prostu wkleić do swojego kodu bądź zmodyfikować, aby dokładnie odpowiadał Twoim potrzebom. Korzystając z przykładów znajdujących się w tej książce, możesz dodać do swoich projektów funkcje obsługujące system plików, przetwarzające grafikę, zabezpieczające witryny i aplikacje przed nieautoryzowanym dostępem.
* Operacje sieciowe
* Praca z systemem plików
* Liczniki odwiedzin i księgi gości
* Przetwarzanie grafiki
* Autoryzacja użytkowników
* Komunikacja z bazami danych
* Przewodnik po najważniejszych elementach języka PHP
Skorzystaj ze sprawdzonych rozwiązań.
Era e-biznesu, w którą wkracza światowa gospodarka, pociąga za sobą konieczność integracji złożonych systemów informatycznych. Usługi WWW (webservices) mają na tym polu do odegrania ważną rolę. Dzięki nim aplikacje mogą komunikować się z innymi aplikacjami poprzez Interenet za pomocą standardowych protokołów, niezależnie od tego, w jakim języku zostały napisane i na jakiej platformie je uruchomiono.
Książka "Java. Usługi WWW. Vademecum profesjonalisty " przeznaczona jest dla programistów mających pewne doświadczenie w pisaniu aplikacji działających w Internecie. Jej celem jest zapoznanie Czytelnika z pojęciem usług WWW oraz wszystkimi elementami potrzebnymi do ich wykorzystania w biznesie. Poznasz założenia technologii usług WWW i schemat zależności pomiędzy nowymi standardami, takimi jak Simple Object Access Protocol (SOAP), Web Services Description Language (WSDL) oraz Universal Description Discovery and Integration (UDDI). Dzięki przykładom kodu szybko nauczysz się implementować usługi WWW w języku Java.
* Dowiesz się, jakie są ogólne założenia architektury usług WWW
* Poznasz język XML będący podstawą innych standardów, wykorzystywanych do budowy usług WWW
* Zaznajomisz się ze standardem SOAP i poznasz jego zastosowania w e-biznesie
* Stworzysz własne usługi WWW w oparciu o Apache Axis i Javę
* Nauczysz się opisywać usługi WWW, tak by mogły być automatycznie wyszukiwane przez aplikacje
* Poznasz najważniejsze platformy, na których buduje się usługi sieciowe: J2EE, .NET, a także moduły SOAP::Lite (Perl) i platformę GLUE
"Java. Usługi WWW. Vademecum profesjonalisty" to książka, która nie tylko przedstawia całą dzisiejszą wiedzę na ten temat, ale także prezentuje praktyczne sposoby jej wykorzystania. Jeśli chcesz być na bieżąco ze światowymi trendami w integrowaniu złożonych aplikacji biznesowych -- musisz ją przeczytać.
Poznaj tajniki najpopularniejszego języka programowania
w erze Internetu
Chyba wszyscy użytkownicy internetu spotkali się z Javą, często nawet o tym nie wiedząc. W ciągu ostatnich 10 lat zyskała ona ogromną popularność, szczególnie wśród programistów aplikacji sieciowych. Jednakże kojarzenie jej z językiem przeznaczonym wyłącznie do tworzenia takich programów jest dużym błędem. Java to w pełni funkcjonalny i doskonale dopracowany język programowania, nadający się do tworzenia różnych aplikacji, a nie tylko apletów działających na stronach internetowych.
W Javie pisane są gry sieciowe, systemy bankowości elektronicznej, pakiety wspomagające sprzedaż i obsługę klienta, a nawet aplikacje działające w telefonach komórkowych i komputerach przenośnych. Podstawową zaletą języka Java jest przenośność kodu -- raz napisany program można uruchomić na każdym urządzeniu, na którym zainstalowane jest odpowiednie środowisko uruchomieniowe, zwane JRE.
Książka "Praktyczny kurs Java" przeznaczona jest dla osób rozpoczynających swoją przygodę z programowaniem w tym języku. Opisuje podstawy języka, zasady programowania obiektowego i tworzenia własnych apletów i aplikacji. Czytając kolejne rozdziały, dowiesz się:
* Jakie typy danych wykorzystywane są w Javie
* Jak deklarować zmienne i wyprowadzać ich wartości na ekran
* W jaki sposób sterować przebiegiem wykonywania programu
* Jakie zasady rządzą programowaniem obiektowym
* Czym są klasy, obiekty, argumenty i metody
* Co to są wyjątki i jak je obsługiwać w programie
* Jak wykorzystać zaawansowane techniki programowania obiektowego w swoich aplikacjach
* W jaki sposób uzyskiwać dostęp do systemu plików z poziomu swojej aplikacji
* Jak tworzyć aplety i samodzielne aplikacje
Zapoznaj się z podstawami programowania w Javie i naucz się zasad programowania obiektowego, a także dowiedz się, czym są wyjątki w Javie i stwórz własne aplety i aplikacje.
Poznaj jedno z najpopularniejszych narzędzi programistycznych
Środowisko programistyczne Delphi od lat cieszy się zasłużoną popularnością wśród twórców oprogramowania. Potężne narzędzie programistyczne, oparte na popularnym języku Pascal, było prekursorem środowisk wizualnych, w których tworzenie aplikacji przypomina budowanie modelu z klocków. Kolejne wersje Delphi były wykorzystywane do tworzenia przeróżnych aplikacji -- począwszy od prostych programików, a skończywszy na rozbudowanych systemach bazodanowych. Najnowsza wersja, oznaczona symbolem 2006, umożliwia tworzenie aplikacji dla platformy .NET oraz "tradycyjnych" aplikacji Win32.
Książka "ABC Delphi 2006" to wprowadzenie do programowania w tym środowisku. Na praktycznych przykładach przedstawia najnowszą wersję Delphi, język Object Pascal oraz filozofię tworzenia aplikacji na podstawie komponentów VCL. Czytając ją, poznasz środowisko programistyczne, elementy języka Object Pascal oraz zasady programowania strukturalnego i obiektowego. Nauczysz się budować własne aplikacje dla systemu Windows oraz wykorzystywać i tworzyć komponenty VCL. Zdobędziesz solidne podstawy do dalszej nauki programowania w Delphi.
* Struktura projektu w Delphi
* Typy danych i zmienne
* Instrukcje sterujące, pętle i wyrażenia warunkowe
* Programowanie obiektowe
* Wykrywanie i usuwanie błędów w kodzie
* Korzystanie z komponentów VCL
* Programowanie grafiki
* Operacje na plikach i drukowanie
* Zapisywanie informacji w rejestrze Windows
* Projektowanie komponentów
Pobierz rozdziały: 12, 13 i 14 jako pliki PDF.
Dołącz do społeczności programistów Pythona!
* Poznaj elementy języka
* Zaprojektuj interfejsy użytkownika
* Stwórz własne aplikacje sieciowe
Python to jeden z najszybciej rozwijających się języków programowania. Jest dostępny na licencji open source i posiada elastyczną, czytelną składnię. Jego możliwości pozwalają programistom na tworzenie aplikacji sieciowych, komunikację z bazami danych i zarządzanie systemami operacyjnymi. Python jest językiem wieloplatformowym, dzięki czemu napisane w nim programy można uruchamiać w różnych środowiskach i pod kontrolą różnych systemów operacyjnych. Ogromne możliwości tego języka zainspirowały duże grono entuzjastów aktywnie dzielących się wiedzą na jego temat na różnego rodzaju forach i listach dyskusyjnych. Gwarantuje to, że żadne zadane im pytanie dotyczące Pythona nie pozostanie bez odpowiedzi.
Książka "Python. Od podstaw" to podręcznik dla tych, którzy chcą opanować ten język i tworzyć w nim własne aplikacje. Dzięki niej poznasz wszystkie elementy Pythona i dowiesz się, na czym polega programowanie obiektowe. Nauczysz się przetwarzać dane tekstowe i liczbowe, tworzyć graficzne interfejsy użytkownika za pomocą GTK oraz łączyć aplikacje z bazami danych. Poznasz zasady korzystania z plików XML, pisania aplikacji internetowych i integrowania Pythona z usługami sieciowymi oraz innymi językami programowania.
Oto niektóre z zagadnień poruszanych w tej książce:
* operacje na liczbach i ciągach znaków,
* konstrukcje sterujące,
* funkcje i moduły,
* programowanie obiektowe,
* operacje na plikach i folderach,
* połączenia z bazami danych,
* przetwarzanie plików XML,
* obsługa serwerów pocztowych,
* tworzenie własnych rozszerzeń w języku C,
* aplikacje biznesowe,
* usługi sieciowe,
* integracja Pythona i Javy.
Odkryj nowe możliwości platformy .NET 2005
Visual C# 2005 to najnowsza wersja języka programowania uważanego przez wielu programistów za najlepszy język służący do tworzenia aplikacji dla platformy .NET. W połączeniu z nową biblioteką klas .NET i nowymi możliwościami środowiska Visual Studio 2005 druga edycja języka C# stała się jeszcze doskonalsza. Pisanie programów wymaga znacznie mniejszych nakładów pracy, a nowe elementy umożliwiają realizację większej ilości zadań programistycznych.
Aby poznać nowe możliwości języka C#, sięgnij po książkę "Visual C# 2005. Zapiski programisty". W tej wzorowanej na zeszytach laboratoryjnych publikacji znajdziesz notatki programistów, którzy jako pierwsi zetknęli się z tą technologią. Nie ma w niej teoretycznych wywodów, diagramów i niepotrzebnych informacji. Wykonując 50 ćwiczeń demonstrujących poszczególne aspekty tworzenia aplikacji, poznasz prostotę stosowania nowych elementów i mechanizmów i przekonasz się, jak wiele udogodnień wnosi do pracy programisty Visual C# 2005.
* Stosowanie klas generycznych
* Korzystanie z metod anonimowych
* Refaktoryzacja kodu źródłowego
* Tworzenie interfejsów użytkownika i formularzy
* Mechanizmy szybkiej instalacji aplikacji
* Zabezpieczanie aplikacji WWW
* Personalizacja stron WWW z użyciem motywów i szablonów
* Połączenia z bazą danych
Język PHP to jedna z najpopularniejszych platform programistycznych służących do tworzenia aplikacji internetowych. Wszędzie tam, gdzie zamierzamy dynamicznie generować treść witryny, gromadzić i przetwarzać dane, identyfikować użytkowników strony lub wysyłać pliki do witryny WWW, wykorzystujemy PHP. Gdy pojawiają się problemy, wertujemy książki, szukając porad i przykładów. Jeśli przydatne wskazówki znajdują się w jednym miejscu, praca szybko posuwa się do przodu.
Przyspiesz proces tworzenia aplikacji w PHP
-- wykorzystaj gotowe fragmenty kodu.
Książka "PHP. Rozmówki" to zbiór ponad 100 przykładów kodu opatrzonych komentarzami i dokładnie przetestowanych w różnych systemach operacyjnych i przeglądarkach. Autor podpowiada gotowe rozwiązania problemów, z którymi borykają się na co dzień programiści PHP. Przykładowy kod z łatwością można dostosować do własnych potrzeb, przyspieszając w ten sposób pracę nad aplikacją i zwiększając produktywność.
* Operacje na łańcuchach tekstowych
* Stosowanie wyrażeń regularnych
* Przetwarzanie tablic
* Operacje na datach
* Obsługa formularzy WWW
* Uwierzytelnianie użytkowników
* Stosowanie plików cookie i mechanizmów sesji
* Praca z systemem plików na serwerze
* Połączenia z bazami danych
* Przetwarzanie dokumentów XML
* Komunikacja z usługami sieciowymi
Do efektywnej pracy z PHP wystarczy ta książka --zatem po co korzystać z opasłych tomów?
Poznaj możliwości platformy J2EE
* Wykorzystaj język XML w aplikacjach bazodanowych
* Zaimplementuj obsługę protokołu SOAP
* Zbuduj aplikacje w oparciu o serwlety i JSP
* Zastosuj w projektach technologię Enterprise Java Beans
Platforma Java 2 Enterprise Edition zdobyła już mocną pozycję na rynku serwerów aplikacji. Dzięki niej możliwe stało się tworzenie aplikacji korporacyjnych zgodnych z podstawowym założeniem przyświecającym twórcom Javy -- "pisz raz, uruchamiaj wszędzie". Najnowsza wersja platformy J2EE została znacznie rozbudowana i zmodernizowana w porównaniu z poprzednimi. Dodano do niej możliwość obsługi usług WWW, rozszerzono i unowocześniono implementacje technologii serwletów i JSP oraz poprawiono wiele komponentów przydatnych przy tworzeniu aplikacji korporacyjnych.
"J2EE. Vademecum profesjonalisty. Wydanie II" to kompletny przewodnik po najnowszej wersji Java 2 Enterprise Edition, napisany przez członków zespołu zajmującego się rozwojem platformy J2EE, zatrudnionych w firmie Sun. Opisuje kluczowe komponenty Java 2 Platform, Enterprise Edition (J2EE) w wersji 1.4. Prezentuje rozwiązania konkretnych problemów napotykanych przez programistów, zilustrowane licznymi przykładami. W książce przedstawiono nie tylko komponenty J2EE, ale również współpracujące z nią technologie: JavaServer Pages Standard Tag Library (JSTL) oraz JavaServer Faces.
* Tworzenie aplikacji internetowej wykorzystującej język XML
* Stosowanie parsera SAX
* Analiza i przetwarzanie hierarchii DOM w dokumentach
* Korzystanie z XPath
* Implementacja usług WWW oraz obsługi protokołu SOAP
* Tworzenie aplikacji z wykorzystaniem serwletów i JSP
* Stosowanie technologii JavaServer Faces
* Projektowanie z wykorzystaniem Enterprise Java Beans
Jeśli chcesz zaprojektować i stworzyć aplikację z wykorzystaniem J2EE, w tej książce znajdziesz wszystkie informacje, jakie mogą Ci być do tego potrzebne.
Windows Movie Maker dołączany do systemu Windows XP to doskonałe narzędzie do domowego montażu cyfrowych filmów wideo. Jest prosty w obsłudze, posiada spore możliwości, a montaż filmów za jego pomocą jest przyjemną zabawą. Movie Maker pozwala na przeniesienie klipów z kamery cyfrowej, zaimportowanie materiałów z dysku, rozmieszczenie ujęć i połączenie ich przejściami, a także udźwiękowienie i dodanie efektów specjalnych. Gotowy film można wysłać pocztą elektroniczną, zapisać na dysku lub płycie CD albo opublikować w internecie.
Książka "Tworzenie filmów w Windows XP. Projekty" przedstawia proces tworzenia filmu wideo. Opisuje kolejne kroki prowadzące do zmontowania cyfrowego filmu wideo z przechwyconych ujęć i zaimportowanych materiałów. Nie znajdziesz w niej jednak długich opisów i dziesiątek parametrów. Każde zagadnienie jest przedstawione za pomocą zrzutów ekranu i krótkich instrukcji. Dzięki temu w ciągu kilku godzin zrealizujesz swój pierwszy projekt w Movie Makerze.
* Elementy interfejsu użytkownika
* Przechwytywanie klipów z kamery wideo
* Import materiałów źródłowych
* Tworzenie wstępnego montażu
* Dodawanie przejść i efektów specjalnych
* Nakładanie plansz tytułowych i napisów
* Udźwiękowienie filmu
* Korzystanie z funkcji Autofilm
* Eksport zmontowanego filmu
Przekonaj się, jak proste może być tworzenie własnych filmów wideo.
Przedstaw się światu!
* Jak zbudować elegancką stronę z blogiem?
* Jak tworzyć wyspecjalizowane przeglądarki bloga?
* Jak dodawać do własnego serwisu blogowego kanał RSS?
Prowadzenie bloga to nowy sposób na zwiększenie aktywności społecznej - szansa na zaistnienie w rzeczywistości wirtualnej, mająca swoje odbicie w tak zwanym „prawdziwym życiu”. Dlatego blogi piszą dziś niemal wszyscy: politycy, marketingowcy, celebryci, biznesmeni. Forma publicznie dostępnego pamiętnika pozwala na szeroką prezentację własnych poglądów, przekonań czy wartości. Z tego powodu blogi wykorzystywane są też jako wortale poświęcone określonej tematyce, promujące idee lub produkty. Ich użytkownicy stworzyli nawet własną społeczność, która 31 sierpnia obchodzi swoje święto - Dzień Bloga. Już dziś możesz do nich dołączyć!
„Blog, więcej niż internetowy pamiętnik” to książka, która pokaże Ci, jak założyć i prowadzić własny blog, a także aktywnie korzystać z innych blogów. Dowiesz się z niej, jak skorzystać z oprogramowania obsługującego serwisy blogowe, jak zintegrować języki PHP, HTML, CSS i SQL, aby stworzyć elegancką stronę prezentującą Twój blog. Nauczysz się budować własną bazę danych, przeznaczoną do przechowywania wpisów, a także zabezpieczać ją przed niepowołanymi modyfikacjami. I wreszcie poznasz sposób na dodanie do własnego serwisu kanału RSS, aby czytelnicy na bieżąco mogli obserwować pojawianie się nowych wpisów. Znajdziesz tu wszystko, czego potrzebujesz, aby zaprezentować światu swój blog!
* Obsługa okna tworzenia bloga
* Modyfikowanie wyglądu bloga
* Publikowanie w określonym terminie
* Rozbudowa bloga
* Instalacja czytnika RSS
* Subskrybowanie blogów za pomocą RSS
* Instalacja oprogramowania własnego serwera
* Baza danych i modyfikacja danych
* Projektowanie struktury bloga
* Zakładanie konta użytkownika
* Zakładanie bazy danych i tabeli danych
* Nadawanie uprawnień do korzystania z tabeli
* Przygotowanie szablonu i tworzenie strony www
* Automatyzowanie, blokowanie i trwałe usuwanie wpisu
* Tworzenie formularza wyszukiwania
* Tworzenie kanału RSS i wypełnianie go treścią
* Pobieranie programu Weber
Blog to prosty i fascynujący sposób, aby świat dowiedział się o Twoim istnieniu!
More Related Content
Similar to Java. Programowanie, biblioteki open-source i pomysły na nowe projekty
Przystępne, a zarazem kompletne wprowadzanie do języka programowania, który zmienił sposób myślenia wielu programistów. W ostatnich latach Java wyprzedziła pod względem popularności inne języki, takie jak C++ i Visual Basic, spełniając większość wymagań stawianych przez twórców aplikacji i stała się najważniejszym językiem nowego pokolenia programistów -- w szczególności projektantów aplikacji działających w Internecie.
Książka pozwala na przyswojenie podstaw języka Java. Dzięki niej poznasz sam język, biblioteki klas, techniki programistyczne i idiomy. „Java. Wprowadzenie” zawiera wiele łatwych w zrozumieniu przykładów wraz z kodem źródłowym. Pozwolą Ci one zapoznać się z wieloma cechami, funkcjami i interfejsami programistycznymi Javy.
Załączony CD-ROM poza przykładami omawianymi w książce zawiera także pełną wersję J2SE SDK 1.4, środowisko NetBeans, narzędzie make (Ant) i serwer aplikacji Tomcat z projektu Jakarta oraz BeanShell, prosty, darmowy język skryptowy Javy napisany przez jednego z autorów tej książki, Pata Niemeyera.
Tematy omówione w tej książce dotyczą:
* technik programowania zorientowanego obiektowo,
* interfejsów programistycznych serwletów i aplikacji internetowych,
* asercji języka i obsługi wyjątków,
* pakietu NIO umożliwiającego tworzenie złożonych systemów wejścia-wyjścia,
* programowania wykorzystującego wątki,
* komponentów Swing służących do budowy okienkowego interfejsu użytkownika
* nowych interfejsów programistycznych wersji 1.4: wyrażeń regularnych, właściwości i dzienników zdarzeń,
* JavaBeans i darmowego środowiska NetBeans,
* Java Plug-in, podpisywaniu apletów i Java Web Start,
* XML (omówiono: SAX, DOM, DTD, XSLT)
Przejdź na wyższy poziom programowania dzięki dwóm "guru" Javy: Herbowi Schildtowi i Jamesowi Holmesowi. Połączenie ich wiedzy pozwoli Ci poznać wiele sekretów i sztuczek wykorzystywanych przez profesjonalistów. W książce autorzy przedstawiają przykłady użytecznych aplikacji oraz towarzyszące im opisy użytych technologii. Prezentowane przykłady możesz wykorzystać w swojej codziennej pracy. Począwszy od interpreterów języka, agentów internetowych i podsystemów e-mail, skończywszy na analizatorach wyrażeń, narzędziach statystycznych i apletach finansowych -- wszystkie aplikacje są gotowe do użycia. Można je też dowolnie modyfikować i rozszerzać.
W książce znajdziesz:
* Omówienie zalet języka Java,
* Tworzenie analizatora wyrażeń numerycznych,
* Tworzenie agenta przeszukującego internet,
* Projektowanie i implementacja interpretera języka programowania,
* Wykonanie funkcjonalnego systemu pocztowego,
* Konstruowanie programu do pobierania danych z internetu z możliwością pobierania fragmentów stron,
* Wykonanie narzędzi statystycznych obliczających średnia, medianę, modalną, odchylenie standardowe, itp.
* Wykonanie apletów i serwletów finansowych obliczających równe raty pożyczki, przyszłą wartość inwestycji, kwotę emerytury, itp.
* Prześledzenie różnych technik wyszukiwania bazujących na sztucznej inteligencji,
* Zapoznanie się z możliwością przeglądania stron HTML-a w Javie.
O autorach:
Herb Schildt jest autorytetem w sprawach języków C, C++, Java i C#, a także doskonałym programistą systemu Windows.
[więcej...]
James Holmes jest konsultantem do spraw tworzenia programowania oraz aplikacji serwerowych w środowiskach biznesowych.
[więcej...]
Jeżeli poznałeś już podstawy Javy, to czas na następny krok.
* Uwolnij siłę drzemiącą w Javie i w jej bibliotekach.
* Niezwykle różnorodne przykłady praktycznych aplikacji.
* Cenny kod źródłowy do wykorzystania we własnych projektach.
Popularność języka Java stale rośnie. Programiści z całego świata wykorzystują go do tworzenia zarówno prostych aplikacji, jak i złożonych systemów. Podstawowa zaleta Javy -- przenośność kodu -- powoduje, że programy napisane w Javie możemy spotkać nie tylko na dyskach komputerów i serwerów, ale również w telefonach komórkowych i innych urządzeniach mobilnych. Java jest ciągle rozwijana -- w każdej kolejnej wersji pojawiają się nowe elementy, ułatwiające realizację coraz bardziej złożonych zagadnień programistycznych.
"Java. Kompendium programisty" to doskonały przewodnik po najnowszym wcieleniu języka Java, noszącym oznaczenie J2SE5. Każdy twórca aplikacji w Javie znajdzie tu niezbędne do swojej pracy informacje. Autor -- Herb Schildt, znany z wielu bestsellerowych pozycji dotyczących programowania w Javie i C++ -- opisuje wszystkie elementy języka Java w wersji 5. Typy danych, metody, konstrukcje, podstawowe biblioteki i techniki programistyczne -- wszystko zostało opisane prostym i zrozumiałym językiem oraz zilustrowane przykładami.
* Historia języka Java
* Podstawowe założenia programowania obiektowego
* Typy danych i zmienne
* Operatory
* Klasy, metody, pakiety i interfejsy
* Wątki i wyjątki
* Elementy bibliotek Javy
* Operacje wejścia i wyjścia
* Programowanie sieciowe
* Biblioteki AWT i Swing
* JavaBeans i serwlety
W tym podręczniku znajdziesz odpowiedzi na wszystkie pytania związane z Javą.
O autorze:
Herb Schildt jest autorytetem w sprawach języków C, C++, Java i C#, a także doskonałym programistą systemu Windows.
[więcej...]
Zwięzły przewodnik opisujący najczęściej używane instrukcje języka Java
* Naucz się kompilować i uruchamiać programy w Javie
* Poznaj najpopularniejsze polecenia tego języka
* Pisz programy działające na wielu platformach
Już od wielu lat Java jest jednym z najpopularniejszych języków programowania, a znający ją programiści są poszukiwani i cenieni na rynku pracy. Jej atrakcyjność wynika głównie z tego, że kod napisany w tym języku można uruchamiać na wielu platformach, włączając w to różne systemy operacyjne, a także urządzenia przenośne, na przykład telefony komórkowe. Prosty jest także dostęp do wielu narzędzi oraz bezpłatnych bibliotek ułatwiających programowanie w Javie. Ponadto język ten otwiera wielkie możliwości w zakresie tworzenia aplikacji sieciowych.
"Java. Rozmówki" przedstawia skuteczne rozwiązania najczęściej występujących problemów i pomoże Ci błyskawicznie rozpocząć programowanie w tym języku. Dowiesz się, jak kompilować i uruchamiać programy w Javie. Nauczysz się manipulować ciągami, strukturami danych i datami oraz stosować wyrażenia regularne. Poznasz operacje wejścia i wyjścia, a także sposoby pracy z katalogami i plikami. Przeczytasz o aplikacjach sieciowych działających zarówno po stronie klienta, jak i po stronie serwera. Opanujesz efektywne techniki pracy z bazami danych i korzystanie z formatu XML.
* Kompilowanie i uruchamianie programów w Javie
* Współpraca ze środowiskiem
* Obsługa ciągów i liczb
* Korzystanie ze struktur danych
* Operacje wejścia i wyjścia
* Manipulowanie plikami i katalogami
* Praca z klientami i serwerami sieciowymi
* Komunikacja z bazami danych i używanie XML
* Programowanie wielowątkowe
Dzięki treściwym rozmówkom błyskawicznie poznasz praktyczne podstawy programowania w Javie.
Przystępny kurs programowania dla wszystkich
* Poznaj najpopularniejsze języki programowania
* Zorganizuj sobie pracę przy tworzeniu aplikacji
* Napisz własny program
* Przetestuj aplikacje i usuń błędy
Mimo dynamicznego rozwoju informatyki wśród większości użytkowników komputerów nadal istnieje przekonanie, że programowanie jest zajęciem dla wybrańców posiadających ogromną i niemal tajemną wiedzę. Tymczasem pisanie programów to umiejętność, którą może opanować każdy. Oczywiście nauka programowania wymaga poznania wielu zagadnień teoretycznych i praktycznych, ale nie wymaga od osoby uczącej się żadnych niezwykłych umiejętności. Każdy może poznać zasady pisania programów, zarówno dla celów hobbystycznych, jak i zawodowych.
Książka "Programowanie. Od podstaw" to podręcznik programowania przeznaczony dla osób, które dopiero rozpoczynają swoją komputerową przygodę. Zawiera uniwersalne wiadomości przydatne każdemu programiście niezależnie od tego, co i w jakim języku będzie tworzyć. Czytając ją, poznasz wady i zalety różnych języków programowania, sposoby realizacji typowych zadań programistycznych i metody testowania aplikacji. Dowiesz się, jak komputery przechowują informacje, jakie systemy liczbowe wykorzystuje się w programowaniu i jakie narzędzia będą Ci potrzebne podczas pracy. Zdobędziesz solidne podstawy, które pozwolą Ci na dalsze rozwijanie swoich umiejętności.
* Sposób interpretacji kodu źródłowego przez komputer
* System binarny i szesnastkowy
* Warsztat pracy programisty
* Komentarze w kodach programów
* Definiowanie zmiennych
* Instrukcje warunkowe
* Testowanie i usuwanie błędów
* Projektowanie interfejsów użytkownika
* Operacje na plikach
* Wykorzystywanie rejestru Windows
* Zarządzanie wersjami kodu
* Kompilacja
Przekonaj się, że programowanie nie jest trudne.
* Obszerny przewodnik po języku Java -- zaktualizowany dla wersji JDK 1.3
* Pełne omówienie środowiska programowania zorientowanego obiektowo oraz klas Swing
* Więcej przykładowch kodów przydatnych profesjonalnym programistom
* CD-ROM zawiera kod źródłowy wszystkich programów, J2SE w wersji 1.3, Forte™ -- Java Community Edition i wiele więcej!
Pięć wydań w USA, pierwsze wydanie w Polsce!
"Java 2. Podstawy” jest najlepszą książką dla programistów. Nie ma sobie równych pod względem ilości przekazanych informacji, a mimo to pozostaje bardzo czytelna. -- K. N. King, Computer Reviews
Programiści znajdą tu wszystko, czego potrzeba, aby wykorzystać potęgę języka Java… -- PC Week
"Java 2. Podstawy" dostarcza wszystkiego, czego potrzebujesz, aby ukończyć nawet najbardziej skomplikowane projekty. Dlatego właśnie ta książka przez pięć lat była międzynarodowym bestsellerem. "Java 2. Podstawy" omawia podstawy platformy Java 2 Standard Edition w wersji 1.3, zawiera pełny opis zorientowanego obiektowo środowiska programistycznego Javy, komponentów interfejsu użytkownika Swing i wiele, wiele więcej.
Piąta wydanie prezentuje wiele nowych, gotowych do zastosowania programów, z których zasłynęły poprzednie edycje tej książki: pojawiły się również nowe programy dotyczące mechanizmu odbicia oraz optymalizacji kodu. Szczegółowo wyjaśniono koncepcję klas wewnętrznych, funkcjonowanie proxy, obsługę wyjątków, techniki usuwania błędów, model zdarzeń Javy, interfejs wejścia/wyjścia oraz zarządzania plikami.
Kompendium dla programistów Javy, a w nim:
* Omówienie języka Java i tworzenia aplikacji w środowisku Forte(tm)
* Tworzenie aplikacji GUI przy pomocy nowych klas Swing
* Sposoby pisania klas proxy i klas wewnętrznych
* Korzystanie z modelu zdarzeń Javy
* Omówienie klas strumieni oraz mechanizmu zarządzania plikami
To idealna książka dla profesjonalnych programistów, którzy chcą nauczyć się Javy i wykorzystać ją w swojej pracy zawodowej. Zawiera CD-ROM z kodem źródłowy wszystkich przykładów, Forte ™ -- Java Community Edition (zintegrowane środowisko programistyczne Javy) oraz wersje testowe wielu innych użytecznych programów.
JavaScript jest językiem sieci. Jest to język intuicyjny i łatwy do przyswojenia. Jego wielką zaletą jest dostępność w większości nowoczesnych przeglądarek WWW. Dzięki JavaScriptowi możemy tworzyć dynamiczne, interaktywne strony WWW. Język ten najczęściej wykorzystywany jest do sprawdzania poprawności formularzy, tworzenia dynamicznych menu, a także do programowania gier. Jednak możliwości tego języka są znacznie większe. Trudno powiedzieć, czy istnieje chociaż jedna komercyjna witryna WWW, która nie zawiera w ogóle JavaScriptu.
Książka "JavaScript. Zaawansowane programowanie" zawiera wszechstronny opis języka JavaScript, jego składni i zastosowań. Na początek zaprezentujemy najnowsze przeglądarki i standardy stosowane w WWW, a następnie przedstawimy praktyczne techniki w postaci krótkich przykładów oraz bardziej szczegółowych i złożonych analiz konkretnych rozwiązań. Niniejsza książka koncentruje się wyłącznie na wykorzystaniu JavaScriptu w przeglądarkach WWW, ponieważ głównie w nich język ten jest stosowany.
Dla kogo jest ta książka?
Dla każdego, komu potrzebny jest JavaScript do tworzenia aplikacji WWW uruchamianych po stronie klienta. Czytelnikom znającym już język JavaScript, książka ta może posłużyć jako aktualny, zaawansowany poradnik; natomiast tym, którzy znają już inny język programowania, pozwoli opanować JavaScript jako nową umiejętność.
Co opisuje ta książka?
* Podstawowe programowanie w JavaScripcie
* Wykorzystanie w skryptach obiektów przeglądarek
* Pracę z multimediami
* Standardy WWW, w tym XML, CSS i W3C DOM
* Dynamiczny HTML
* Techniki uruchamiania skryptów
* Wyrażenia regularne i walidację formularzy
* Analizę przykładów zastosowań praktycznych
* Propozycja ECMAScript Edition 4
Naszym celem jest pomagać Czytelnikom w osiągnięciu sukcesu, dzieląc się wiedzą doświadczonych programistów na każdym etapie Waszych karier.
Profesjonalny przewodnik po języku Perl
Ten kompletny przewodnik po Perlu szybko i wygodnie dostarcza doświadczonym programistom odpowiednich technik i ilustrujących je praktycznych przykładów kodu. Lektura tej książki pozwoli Ci najpierw rozwinąć swoje dotychczasowe umiejętności, a następnie zgłębić tajniki podstawowych technik programowania w Perlu. Książka rozpoczyna się opisem podstawowej składni języka, przechodzi później do obiektów, struktur danych i zasad przetwarzania tekstu. Następnie wyjaśnia, jak korzystać z dostarczonych przez Perl narzędzi umożliwiających pracę z plikami, działanie programów w sieci czy współpracę z relacyjnymi bazami danych. Na koniec pokazuje, jak wykorzystać pełnię możliwości Perla podczas tworzenia aplikacji WWW - zarówno prostych skryptów CGI, jak i w pełni zaawansowanych narzędzi obsługujących witryny WWW.
Opisano między innymi:
* Typy danych i podstawowe funkcje Perla
* Zasady pisania i korzystania z modułów Perla
* Sposoby korzystania z plików tekstowych i plików DBM
* Interfejs DBI pozwalający na korzystanie z baz danych i integrowanie baz danych ze stronami WWW
* Programy CGI, moduły mod_perl dla serwera Apache, cookie protokołu HTTP oraz szablony HTML/Perla
* Mason: oparty na Perlu system tworzenia zaawansowanych witryn WWW
* Wykrywanie i usuwanie błędów, optymalizacja kodu oraz sprawy związane z bezpieczeństwem
Od wielu już lat programiści na całym świecie doceniają Perla za jego prostotę, wygodę i uniwersalną zdolność do rozwiązywania szerokiego zakresu problemów; począwszy od przetwarzania tekstu i administrowania systemem operacyjnym po komunikację z bazami danych i tworzenie stron WWW. Książka "Perl" dostarcza programistom wiedzy niezbędnej do tworzenia wszechstronnych, przejrzystych i bardzo wydajnych programów - niezależnie jakie będą zadania tworzonych przez niego aplikacji.
Wyczerpujące omówienie najpopularniejszego środowiskado tworzenia dynamicznych witryn WWW
* Poznaj zasady programowania w PHP5 i w pełni wykorzystaj jego nowe możliwości
* Zastosuj bazę danych jako zaplecze dla stron WWW
* Zaprojektuj i stwórz dynamiczną witrynę WWW za pomocą PHP i MySQL
O PHP i MySQL słyszał już chyba każdy, kto zajmuje się projektowaniem witryn WWW. Skrypty napisane w języku PHP i korzystające z bazy danych MySQL "napędzają" tysiące dynamicznych stron WWW -- sklepów, portali oraz aplikacji e-commerce. Duet PHP i MySQL to stabilne, wydajne i proste do opanowania środowisko o ogromnych możliwościach. Dostępne są nieodpłatnie, co jest jednym z głównych powodów ich popularności. Za ich pomocą można stworzyć zarówno proste wiadomości na stronie WWW, jak i rozbudowane systemy autoryzacji użytkowników, płatności elektronicznych, galerii i wiele innych aplikacji internetowych.
"PHP5 i MySQL. Biblia" to kompleksowe omówienie zagadnień związanych z tworzeniem witryn WWW z wykorzystaniem tych technologii. Przedstawia zasady programowania w języku PHP5 z uwzględnieniem reguł projektowania obiektowego. Opisuje bazę danych MySQL, język SQL oraz sposoby połączenia skryptów PHP z tabelami w bazie danych. Czytając ją, nauczysz się osadzać kod PHP w dokumentach HTML, korzystać z mechanizmów obsługi sesji oraz języka XML, korzystać z innych baz danych oraz zabezpieczać witryny WWW stworzone za pomocą PHP. Dowiesz się, jak zaimplementować obsługę wyjątków oraz jak usuwać błędy z kodu źródłowego. Napiszesz skrypty stanowiące komponenty rozbudowanego dynamicznego serwisu WWW, które z powodzeniem będziesz mógł wykorzystać w wielu swoich projektach.
* Typy danych, zmienne, polecenia i funkcje w PHP
* Operacje na tekstach, wartościach liczbowych i tablicach
* Administrowanie bazą MySQL
* Łączenie skryptów PHP z bazą danych
* Tworzenie elementów generowanych dynamicznie
* Programowanie obiektowe w PHP
* Mechanizmy obsługi sesji i plików cookie
* Korzystanie z biblioteki PEAR
* Obsługa wyjątków i usuwanie błędów z kodów źródłowych
* Korzystanie z baz danych PostgreSQL oraz Oracle
* Łączenie PHP z JavaScript i Javą
* Przetwarzanie plików XML i tworzenie usług sieciowych
* Generowanie grafiki za pomocą PHP
* Uwierzytelnianie użytkowników
W tej książce znajdziesz wszystko, czego potrzebujeszaby w pełni wykorzystać możliwości PHP i MySQL.
Przyspiesz tworzenie aplikacji w Javie
* Uprość określanie zależności pomiędzy klasami
* Zastosuj narzędzie Hibernate do usprawnienia komunikacji z bazami danych
* Wykorzystaj możliwości programowania aspektowego
Technologia J2EE miała w założeniu być prosta i szybka w użytkowaniu. Praktyka jednak okazała się daleka od teorii. Mozolne tworzenie aplikacji wykorzystujących dziesiątki interfejsów połączonych wzajemnymi zależnościami, setki deskryptorów wdrożenia oraz plików pomocniczych spowodowało, że zaczęto poszukiwać rozwiązań alternatywnych. Jednym z nich okazał się framework Spring, zyskujący coraz większą popularność wśród programistów Javy. Spring jest znacznie dużo prostszy od wielu alternatywnych rozwiązań J2EE, znacznie ułatwia testowanie aplikacji, i pozwala na usuwanie zależności z kodu oraz oddzielanie ich od serwera aplikacji. Spring umożliwia również wykorzystanie programowania aspektowego.
Książka "Spring. Zapiski programisty" to praktyczny przewodnik po możliwościach tego środowiska. Jeśli wolisz poznawać nowe zagadnienia w sposób praktyczny, a nie wertując setki stron zapełnionych teoretycznymi wywodami, to ta książka jest właśnie dla Ciebie. Znajdziesz w niej omówienie zagadnień związanych z samym Springiem, współpracującymi z nim narzędziami i sposobami wykorzystania ich w procesie tworzenia aplikacji J2EE -- począwszy do graficznego interfejsu użytkownika i interfejsu sieciowego, a skończywszy na dostępie do relacyjnych baz danych.
* Tworzenie klas z zastosowaniem zależności
* Budowanie interfejsu użytkownika
* Integrowanie JSF z frameworkiem Spring
* Dostęp do baz danych za pomocą JDBC
* Odwzorowanie baz danych na obiekty za pomocą Hibernaete
* Obsługa i zabezpieczanie transakcji
* Wysyłanie i odbieranie wiadomości e-mail
Jeśli poszukujesz wydajniejszych metod tworzenia aplikacji J2EE, wykorzystaj możliwości frameworka Spring. Dzięki tej książce poznasz je wszystkie.
* Przewodnik dla doświadczonych programistów omawiający zaawansowane możliwości platformy Java dla wersji JDK 1.3 i 1.4.
* Dostarcza wielu praktycznych przykładów kodu!
* Zawiera nowe bądź zaktualizowane omówienie: języka XML, problematyki bezpieczeństwa, programowania aplikacji sieciowych, wielowątkowości, kolekcji, zdalnych obiektów, interfejsu JDBC™, architektury komponentów JavaBeans™, biblioteki Swing i wielu innych zagadnień.
Przewodnik po zaawansowanych metodach programowania w Javie dla zaawansowanych programistów.
Książka ta dostarcza doświadczonym programistom rozwiązań niezbędnych do pełnego wykorzystania możliwości Javy. To praktyczny przewodnik ułatwiający rozwiązywanie nawet najbardziej złożonych problemów programistycznych. Dodatkowo zawiera zupełnie nowy rozdział poświęcony wykorzystaniu języka XML w programach pisanych w Javie oraz zaktualizowane omówienie wielu zaawansowanych możliwości tej platformy -- od kolekcji po metody macierzyste, od bezpieczeństwa po bibliotekę Swing.
Autorzy identyfikują problemy najczęściej napotykane przez doświadczonych programistów Javy i dostarczają przemyślanych rozwiązań zilustrowanych przykładami kodu, które uczyniły z tej książki prawdziwy bestseller. Dzięki niej ujrzysz w nowym świetle zagadnienia interfejsu ODBC™, tworzenia aplikacji sieciowych, wykorzystania zdalnych obiektów i wiele innych.
Najważniejsze informacje dla programistów Java:
* Zaktualizowane omówienie wielowątkowości, kolekcji i aplikacji sieciowych.
* Zmienione przedstawienie problematyki zdalnych obiektów.
* Nowe, zaawansowane techniki wykorzystania architektury komponentów JavaBeans™.
* Zaawansowane techniki tworzenia interfejsu użytkownika wykorzystujące biblioteki Swing i AWT.
Książka będzie dla Ciebie kolejnym krokiem w poznaniu możliwości Javy. Jest rozszerzeniem i doskonałym uzupełnieniem publikacji "Java 2. Postawy".
O autorach:
CAY S. HORSTMANN wykłada informatykę na uniwersytecie stanowym w San Jose. Napisał sześć książek o C++, Javie i programowaniu zorientowanym obiektowo. Jest redaktorem naczelnym bestselerowego cyklu Core Series, wydawnictwa Prentice Hall PTR.
GARY CORNELL zrobił doktorat na uniwersytecie Brown i współpracował z IBM Watson Labs. Jest autorem lub współautorem 20 książek oraz wielu artykułów, wydrukowanych w czasopismach komputerowych. Obecnie kieruje programem Modern Visual Programming na Uniwersytecie Connecticut.
Kompendium wiedzy dla profesjonalnych programistów serwisów internetowych.
Książka zawiera komplet informacji niezbędnych twórcom zaawansowanych aplikacji sieciowych i opisuje: HTML 4, Java Standard Edition 1.3, serwlety, JavaServer Pages i wiele innych technologii. "Serwisy internetowe. Programowanie" łączy te technologie pokazując, jak przy ich pomocy tworzyć profesjonalne systemy.
HTML 4: Dogłębny, praktyczny opis struktury dokumentu HTML, jego elementów, ramek i styli kaskadowych.
Java 2: Podstawy składni, projektowanie zorientowane obiektowo, aplety, tworzenie animacji, narzędzie Java PlugIn, tworzenie interfejsu użytkownika (Swing), Java 2D API, aplikacje wielowątkowe, programowanie sieciowe, korzystanie z baz danych i jeszcze więcej.
Technologie serwerowe Javy: Serwlety, JSP, XML, JDBC – fundamentalne technologie umożliwiające budowę aplikacji w Javie. Tematy zaawansowane dotyczą tworzenia własnych bibliotek znaczników JSP, łączenia serwletów z JSP (MVC), tworzenie puli połączeń do baz danych, SAX, DOM i XSLT. Dokładnie omówiono także HTTP 1.1.
JavaScript: Dynamiczne tworzenie zawartości stron WWW, śledzenie zachowania użytkownika, sprawdzanie poprawności danych w formularzach HTML. Dołączono podręczny skorowidz komend.
Pierwsze wydanie tej książki jest używane jako podręcznik na takich uczelniach jak MIT, Standford, UC Berkeley, UCLA, Princeton i John Hopkins. Książka, którą trzymasz w ręku, została zaktualizowana i uzupełniona o najnowsze technologie oraz towarzyszące im przykłady gotowego kodu.
* Światowy bestseller -- aktualne kompendium dla zaawansowanych
programistów serwisów WWW
* Dogłębny opis HTML 4, CSS, Javy 2, serwletów, JavaServer Pages i XML
* Przykłady kodu używanego przez profesjonalistów
Wykorzystaj w swoich projektach gotowe rozwiązania
* Przetwarzanie grafiki
* Operacje na plikach
* Komunikacja z bazami danych
PHP to jeden z najpopularniejszych języków wykorzystywanych do tworzenia dynamicznych witryn WWW. Od początku swojej obecności na rynku zyskał ogromne uznanie programistów. Jest dostępny nieodpłatnie i ma ogromne możliwości. Jego najnowsza wersja otworzyła przed twórcami aplikacji nowe horyzonty, oferując im wszystkie korzyści wynikające z programowania obiektowego. PHP jest dostępny dla większości popularnych systemów operacyjnych z rodziny Unix/Linux, Windows, Mac OS oraz Risc OS. Współpracuje też z wieloma serwerami HTTP, dzięki czemu jest niezwykle uniwersalny.
W książce "PHP. 101 praktycznych skryptów. Wydanie II" znajdziesz gotowe skrypty, dzięki którym zdecydowanie przyśpieszysz swoją pracę nad aplikacjami i serwisami internetowymi. To wydanie zostało tak zaktualizowane w stosunku do poprzedniego, że skrypty działają prawidłowo w najnowszej wersji języka PHP. Autor zapewnił także zgodność generowanych przez nie dokumentów HTML z obowiązującymi standardami tego języka. Każdy ze skryptów możesz po prostu wkleić do swojego kodu bądź zmodyfikować, aby dokładnie odpowiadał Twoim potrzebom. Korzystając z przykładów znajdujących się w tej książce, możesz dodać do swoich projektów funkcje obsługujące system plików, przetwarzające grafikę, zabezpieczające witryny i aplikacje przed nieautoryzowanym dostępem.
* Operacje sieciowe
* Praca z systemem plików
* Liczniki odwiedzin i księgi gości
* Przetwarzanie grafiki
* Autoryzacja użytkowników
* Komunikacja z bazami danych
* Przewodnik po najważniejszych elementach języka PHP
Skorzystaj ze sprawdzonych rozwiązań.
Era e-biznesu, w którą wkracza światowa gospodarka, pociąga za sobą konieczność integracji złożonych systemów informatycznych. Usługi WWW (webservices) mają na tym polu do odegrania ważną rolę. Dzięki nim aplikacje mogą komunikować się z innymi aplikacjami poprzez Interenet za pomocą standardowych protokołów, niezależnie od tego, w jakim języku zostały napisane i na jakiej platformie je uruchomiono.
Książka "Java. Usługi WWW. Vademecum profesjonalisty " przeznaczona jest dla programistów mających pewne doświadczenie w pisaniu aplikacji działających w Internecie. Jej celem jest zapoznanie Czytelnika z pojęciem usług WWW oraz wszystkimi elementami potrzebnymi do ich wykorzystania w biznesie. Poznasz założenia technologii usług WWW i schemat zależności pomiędzy nowymi standardami, takimi jak Simple Object Access Protocol (SOAP), Web Services Description Language (WSDL) oraz Universal Description Discovery and Integration (UDDI). Dzięki przykładom kodu szybko nauczysz się implementować usługi WWW w języku Java.
* Dowiesz się, jakie są ogólne założenia architektury usług WWW
* Poznasz język XML będący podstawą innych standardów, wykorzystywanych do budowy usług WWW
* Zaznajomisz się ze standardem SOAP i poznasz jego zastosowania w e-biznesie
* Stworzysz własne usługi WWW w oparciu o Apache Axis i Javę
* Nauczysz się opisywać usługi WWW, tak by mogły być automatycznie wyszukiwane przez aplikacje
* Poznasz najważniejsze platformy, na których buduje się usługi sieciowe: J2EE, .NET, a także moduły SOAP::Lite (Perl) i platformę GLUE
"Java. Usługi WWW. Vademecum profesjonalisty" to książka, która nie tylko przedstawia całą dzisiejszą wiedzę na ten temat, ale także prezentuje praktyczne sposoby jej wykorzystania. Jeśli chcesz być na bieżąco ze światowymi trendami w integrowaniu złożonych aplikacji biznesowych -- musisz ją przeczytać.
Poznaj tajniki najpopularniejszego języka programowania
w erze Internetu
Chyba wszyscy użytkownicy internetu spotkali się z Javą, często nawet o tym nie wiedząc. W ciągu ostatnich 10 lat zyskała ona ogromną popularność, szczególnie wśród programistów aplikacji sieciowych. Jednakże kojarzenie jej z językiem przeznaczonym wyłącznie do tworzenia takich programów jest dużym błędem. Java to w pełni funkcjonalny i doskonale dopracowany język programowania, nadający się do tworzenia różnych aplikacji, a nie tylko apletów działających na stronach internetowych.
W Javie pisane są gry sieciowe, systemy bankowości elektronicznej, pakiety wspomagające sprzedaż i obsługę klienta, a nawet aplikacje działające w telefonach komórkowych i komputerach przenośnych. Podstawową zaletą języka Java jest przenośność kodu -- raz napisany program można uruchomić na każdym urządzeniu, na którym zainstalowane jest odpowiednie środowisko uruchomieniowe, zwane JRE.
Książka "Praktyczny kurs Java" przeznaczona jest dla osób rozpoczynających swoją przygodę z programowaniem w tym języku. Opisuje podstawy języka, zasady programowania obiektowego i tworzenia własnych apletów i aplikacji. Czytając kolejne rozdziały, dowiesz się:
* Jakie typy danych wykorzystywane są w Javie
* Jak deklarować zmienne i wyprowadzać ich wartości na ekran
* W jaki sposób sterować przebiegiem wykonywania programu
* Jakie zasady rządzą programowaniem obiektowym
* Czym są klasy, obiekty, argumenty i metody
* Co to są wyjątki i jak je obsługiwać w programie
* Jak wykorzystać zaawansowane techniki programowania obiektowego w swoich aplikacjach
* W jaki sposób uzyskiwać dostęp do systemu plików z poziomu swojej aplikacji
* Jak tworzyć aplety i samodzielne aplikacje
Zapoznaj się z podstawami programowania w Javie i naucz się zasad programowania obiektowego, a także dowiedz się, czym są wyjątki w Javie i stwórz własne aplety i aplikacje.
Poznaj jedno z najpopularniejszych narzędzi programistycznych
Środowisko programistyczne Delphi od lat cieszy się zasłużoną popularnością wśród twórców oprogramowania. Potężne narzędzie programistyczne, oparte na popularnym języku Pascal, było prekursorem środowisk wizualnych, w których tworzenie aplikacji przypomina budowanie modelu z klocków. Kolejne wersje Delphi były wykorzystywane do tworzenia przeróżnych aplikacji -- począwszy od prostych programików, a skończywszy na rozbudowanych systemach bazodanowych. Najnowsza wersja, oznaczona symbolem 2006, umożliwia tworzenie aplikacji dla platformy .NET oraz "tradycyjnych" aplikacji Win32.
Książka "ABC Delphi 2006" to wprowadzenie do programowania w tym środowisku. Na praktycznych przykładach przedstawia najnowszą wersję Delphi, język Object Pascal oraz filozofię tworzenia aplikacji na podstawie komponentów VCL. Czytając ją, poznasz środowisko programistyczne, elementy języka Object Pascal oraz zasady programowania strukturalnego i obiektowego. Nauczysz się budować własne aplikacje dla systemu Windows oraz wykorzystywać i tworzyć komponenty VCL. Zdobędziesz solidne podstawy do dalszej nauki programowania w Delphi.
* Struktura projektu w Delphi
* Typy danych i zmienne
* Instrukcje sterujące, pętle i wyrażenia warunkowe
* Programowanie obiektowe
* Wykrywanie i usuwanie błędów w kodzie
* Korzystanie z komponentów VCL
* Programowanie grafiki
* Operacje na plikach i drukowanie
* Zapisywanie informacji w rejestrze Windows
* Projektowanie komponentów
Pobierz rozdziały: 12, 13 i 14 jako pliki PDF.
Dołącz do społeczności programistów Pythona!
* Poznaj elementy języka
* Zaprojektuj interfejsy użytkownika
* Stwórz własne aplikacje sieciowe
Python to jeden z najszybciej rozwijających się języków programowania. Jest dostępny na licencji open source i posiada elastyczną, czytelną składnię. Jego możliwości pozwalają programistom na tworzenie aplikacji sieciowych, komunikację z bazami danych i zarządzanie systemami operacyjnymi. Python jest językiem wieloplatformowym, dzięki czemu napisane w nim programy można uruchamiać w różnych środowiskach i pod kontrolą różnych systemów operacyjnych. Ogromne możliwości tego języka zainspirowały duże grono entuzjastów aktywnie dzielących się wiedzą na jego temat na różnego rodzaju forach i listach dyskusyjnych. Gwarantuje to, że żadne zadane im pytanie dotyczące Pythona nie pozostanie bez odpowiedzi.
Książka "Python. Od podstaw" to podręcznik dla tych, którzy chcą opanować ten język i tworzyć w nim własne aplikacje. Dzięki niej poznasz wszystkie elementy Pythona i dowiesz się, na czym polega programowanie obiektowe. Nauczysz się przetwarzać dane tekstowe i liczbowe, tworzyć graficzne interfejsy użytkownika za pomocą GTK oraz łączyć aplikacje z bazami danych. Poznasz zasady korzystania z plików XML, pisania aplikacji internetowych i integrowania Pythona z usługami sieciowymi oraz innymi językami programowania.
Oto niektóre z zagadnień poruszanych w tej książce:
* operacje na liczbach i ciągach znaków,
* konstrukcje sterujące,
* funkcje i moduły,
* programowanie obiektowe,
* operacje na plikach i folderach,
* połączenia z bazami danych,
* przetwarzanie plików XML,
* obsługa serwerów pocztowych,
* tworzenie własnych rozszerzeń w języku C,
* aplikacje biznesowe,
* usługi sieciowe,
* integracja Pythona i Javy.
Odkryj nowe możliwości platformy .NET 2005
Visual C# 2005 to najnowsza wersja języka programowania uważanego przez wielu programistów za najlepszy język służący do tworzenia aplikacji dla platformy .NET. W połączeniu z nową biblioteką klas .NET i nowymi możliwościami środowiska Visual Studio 2005 druga edycja języka C# stała się jeszcze doskonalsza. Pisanie programów wymaga znacznie mniejszych nakładów pracy, a nowe elementy umożliwiają realizację większej ilości zadań programistycznych.
Aby poznać nowe możliwości języka C#, sięgnij po książkę "Visual C# 2005. Zapiski programisty". W tej wzorowanej na zeszytach laboratoryjnych publikacji znajdziesz notatki programistów, którzy jako pierwsi zetknęli się z tą technologią. Nie ma w niej teoretycznych wywodów, diagramów i niepotrzebnych informacji. Wykonując 50 ćwiczeń demonstrujących poszczególne aspekty tworzenia aplikacji, poznasz prostotę stosowania nowych elementów i mechanizmów i przekonasz się, jak wiele udogodnień wnosi do pracy programisty Visual C# 2005.
* Stosowanie klas generycznych
* Korzystanie z metod anonimowych
* Refaktoryzacja kodu źródłowego
* Tworzenie interfejsów użytkownika i formularzy
* Mechanizmy szybkiej instalacji aplikacji
* Zabezpieczanie aplikacji WWW
* Personalizacja stron WWW z użyciem motywów i szablonów
* Połączenia z bazą danych
Język PHP to jedna z najpopularniejszych platform programistycznych służących do tworzenia aplikacji internetowych. Wszędzie tam, gdzie zamierzamy dynamicznie generować treść witryny, gromadzić i przetwarzać dane, identyfikować użytkowników strony lub wysyłać pliki do witryny WWW, wykorzystujemy PHP. Gdy pojawiają się problemy, wertujemy książki, szukając porad i przykładów. Jeśli przydatne wskazówki znajdują się w jednym miejscu, praca szybko posuwa się do przodu.
Przyspiesz proces tworzenia aplikacji w PHP
-- wykorzystaj gotowe fragmenty kodu.
Książka "PHP. Rozmówki" to zbiór ponad 100 przykładów kodu opatrzonych komentarzami i dokładnie przetestowanych w różnych systemach operacyjnych i przeglądarkach. Autor podpowiada gotowe rozwiązania problemów, z którymi borykają się na co dzień programiści PHP. Przykładowy kod z łatwością można dostosować do własnych potrzeb, przyspieszając w ten sposób pracę nad aplikacją i zwiększając produktywność.
* Operacje na łańcuchach tekstowych
* Stosowanie wyrażeń regularnych
* Przetwarzanie tablic
* Operacje na datach
* Obsługa formularzy WWW
* Uwierzytelnianie użytkowników
* Stosowanie plików cookie i mechanizmów sesji
* Praca z systemem plików na serwerze
* Połączenia z bazami danych
* Przetwarzanie dokumentów XML
* Komunikacja z usługami sieciowymi
Do efektywnej pracy z PHP wystarczy ta książka --zatem po co korzystać z opasłych tomów?
Poznaj możliwości platformy J2EE
* Wykorzystaj język XML w aplikacjach bazodanowych
* Zaimplementuj obsługę protokołu SOAP
* Zbuduj aplikacje w oparciu o serwlety i JSP
* Zastosuj w projektach technologię Enterprise Java Beans
Platforma Java 2 Enterprise Edition zdobyła już mocną pozycję na rynku serwerów aplikacji. Dzięki niej możliwe stało się tworzenie aplikacji korporacyjnych zgodnych z podstawowym założeniem przyświecającym twórcom Javy -- "pisz raz, uruchamiaj wszędzie". Najnowsza wersja platformy J2EE została znacznie rozbudowana i zmodernizowana w porównaniu z poprzednimi. Dodano do niej możliwość obsługi usług WWW, rozszerzono i unowocześniono implementacje technologii serwletów i JSP oraz poprawiono wiele komponentów przydatnych przy tworzeniu aplikacji korporacyjnych.
"J2EE. Vademecum profesjonalisty. Wydanie II" to kompletny przewodnik po najnowszej wersji Java 2 Enterprise Edition, napisany przez członków zespołu zajmującego się rozwojem platformy J2EE, zatrudnionych w firmie Sun. Opisuje kluczowe komponenty Java 2 Platform, Enterprise Edition (J2EE) w wersji 1.4. Prezentuje rozwiązania konkretnych problemów napotykanych przez programistów, zilustrowane licznymi przykładami. W książce przedstawiono nie tylko komponenty J2EE, ale również współpracujące z nią technologie: JavaServer Pages Standard Tag Library (JSTL) oraz JavaServer Faces.
* Tworzenie aplikacji internetowej wykorzystującej język XML
* Stosowanie parsera SAX
* Analiza i przetwarzanie hierarchii DOM w dokumentach
* Korzystanie z XPath
* Implementacja usług WWW oraz obsługi protokołu SOAP
* Tworzenie aplikacji z wykorzystaniem serwletów i JSP
* Stosowanie technologii JavaServer Faces
* Projektowanie z wykorzystaniem Enterprise Java Beans
Jeśli chcesz zaprojektować i stworzyć aplikację z wykorzystaniem J2EE, w tej książce znajdziesz wszystkie informacje, jakie mogą Ci być do tego potrzebne.
Similar to Java. Programowanie, biblioteki open-source i pomysły na nowe projekty (20)
Windows Movie Maker dołączany do systemu Windows XP to doskonałe narzędzie do domowego montażu cyfrowych filmów wideo. Jest prosty w obsłudze, posiada spore możliwości, a montaż filmów za jego pomocą jest przyjemną zabawą. Movie Maker pozwala na przeniesienie klipów z kamery cyfrowej, zaimportowanie materiałów z dysku, rozmieszczenie ujęć i połączenie ich przejściami, a także udźwiękowienie i dodanie efektów specjalnych. Gotowy film można wysłać pocztą elektroniczną, zapisać na dysku lub płycie CD albo opublikować w internecie.
Książka "Tworzenie filmów w Windows XP. Projekty" przedstawia proces tworzenia filmu wideo. Opisuje kolejne kroki prowadzące do zmontowania cyfrowego filmu wideo z przechwyconych ujęć i zaimportowanych materiałów. Nie znajdziesz w niej jednak długich opisów i dziesiątek parametrów. Każde zagadnienie jest przedstawione za pomocą zrzutów ekranu i krótkich instrukcji. Dzięki temu w ciągu kilku godzin zrealizujesz swój pierwszy projekt w Movie Makerze.
* Elementy interfejsu użytkownika
* Przechwytywanie klipów z kamery wideo
* Import materiałów źródłowych
* Tworzenie wstępnego montażu
* Dodawanie przejść i efektów specjalnych
* Nakładanie plansz tytułowych i napisów
* Udźwiękowienie filmu
* Korzystanie z funkcji Autofilm
* Eksport zmontowanego filmu
Przekonaj się, jak proste może być tworzenie własnych filmów wideo.
Przedstaw się światu!
* Jak zbudować elegancką stronę z blogiem?
* Jak tworzyć wyspecjalizowane przeglądarki bloga?
* Jak dodawać do własnego serwisu blogowego kanał RSS?
Prowadzenie bloga to nowy sposób na zwiększenie aktywności społecznej - szansa na zaistnienie w rzeczywistości wirtualnej, mająca swoje odbicie w tak zwanym „prawdziwym życiu”. Dlatego blogi piszą dziś niemal wszyscy: politycy, marketingowcy, celebryci, biznesmeni. Forma publicznie dostępnego pamiętnika pozwala na szeroką prezentację własnych poglądów, przekonań czy wartości. Z tego powodu blogi wykorzystywane są też jako wortale poświęcone określonej tematyce, promujące idee lub produkty. Ich użytkownicy stworzyli nawet własną społeczność, która 31 sierpnia obchodzi swoje święto - Dzień Bloga. Już dziś możesz do nich dołączyć!
„Blog, więcej niż internetowy pamiętnik” to książka, która pokaże Ci, jak założyć i prowadzić własny blog, a także aktywnie korzystać z innych blogów. Dowiesz się z niej, jak skorzystać z oprogramowania obsługującego serwisy blogowe, jak zintegrować języki PHP, HTML, CSS i SQL, aby stworzyć elegancką stronę prezentującą Twój blog. Nauczysz się budować własną bazę danych, przeznaczoną do przechowywania wpisów, a także zabezpieczać ją przed niepowołanymi modyfikacjami. I wreszcie poznasz sposób na dodanie do własnego serwisu kanału RSS, aby czytelnicy na bieżąco mogli obserwować pojawianie się nowych wpisów. Znajdziesz tu wszystko, czego potrzebujesz, aby zaprezentować światu swój blog!
* Obsługa okna tworzenia bloga
* Modyfikowanie wyglądu bloga
* Publikowanie w określonym terminie
* Rozbudowa bloga
* Instalacja czytnika RSS
* Subskrybowanie blogów za pomocą RSS
* Instalacja oprogramowania własnego serwera
* Baza danych i modyfikacja danych
* Projektowanie struktury bloga
* Zakładanie konta użytkownika
* Zakładanie bazy danych i tabeli danych
* Nadawanie uprawnień do korzystania z tabeli
* Przygotowanie szablonu i tworzenie strony www
* Automatyzowanie, blokowanie i trwałe usuwanie wpisu
* Tworzenie formularza wyszukiwania
* Tworzenie kanału RSS i wypełnianie go treścią
* Pobieranie programu Weber
Blog to prosty i fascynujący sposób, aby świat dowiedział się o Twoim istnieniu!
Pakiet biurowy MS Office jest jednym z podstawowych narzędzi wykorzystywanych we współczesnych firmach. Zawarty w nim system zarządzania bazami danych Access to wygodna w obsłudze aplikacja służąca do operowania na zbiorach danych. Dzięki prostocie obsługi, sporym możliwościom i wizualnym narzędziom stanowi doskonałe rozwiązanie dla przedsiębiorstw, w których duże znaczenie ma czas poświęcany na opanowanie nowych programów. Kreatory i rozbudowany system pomocy oferowane przez Accessa niezwykle upraszczają proces tworzenia bazy oraz aplikacji przeznaczonych do obsługi zgromadzonych w niej danych.
W książce "Access w biurze i nie tylko" znajdziesz omówienie podstawowych możliwości tego systemu. Nauczysz się tworzyć i otwierać istniejące bazy danych oraz tworzyć nowe. Dowiesz się, w jaki sposób projektować tabele i jak dobierać typy danych dla poszczególnych kolumn tabeli. Przeczytasz o relacjach, poznasz sposoby wybierania i wstawiania danych, a także manipulowania nimi za pomocą kwerend. W kolejnych rozdziałach znajdziesz informacje o tworzeniu formularzy i raportów oraz wyświetlaniu wykresów na podstawie danych zgromadzonych w bazie. Nauczysz się także pisać własne makra i poznasz podstawy języka Visual Basic for Applications.
* Otwieranie istniejących baz danych
* Tworzenie tabel
* Typy danych
* Tworzenie i modyfikowanie relacji
* Manipulowanie danymi za pomocą kwerend
* Konstruowanie formularzy
* Budowanie raportów
* Automatyzacja pracy za pomocą makropoleceń
* Tworzenie i wyświetlanie wykresów
Dane to dziś najcenniejszy towar. Naucz się nim zarządzać.
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
Zapewnij swojej witrynie miejsce w pierwszej dziesiątce!
* Jak działają wyszukiwarki?
* Jaki wpływ na pozycję serwisu mają linki przychodzące i wychodzące?
* Czy istnieją zagrożenia związane z niewłaściwym pozycjonowaniem?
Stworzenie serwisu WWW to dopiero połowa sukcesu w Internecie. Druga połowa to zapewnienie witrynie odpowiedniej popularności. A tę popularność może zagwarantować przede wszystkim wysokie miejsce w wynikach wyszukiwarek. Jak to osiągnąć? Od czego zacząć i jak monitorować skuteczność prowadzonych działań? Wszystkie odpowiedzi znajdziesz właśnie w tej książce!
Poprzez liczne przykłady i ćwiczenia autorzy zapoznają Cię ze sposobem działania wyszukiwarki Google i zasadami doboru właściwych słów kluczowych. Pokażą, jak najlepiej rozmieścić je na stronie. Ponadto dowiesz się, jaki wpływ na pozycję strony mają linki wychodzące oraz przychodzące, jak przebiega proces indeksowania strony, jak działają systemy wymiany linków oraz jak wykorzystać statystyki do obserwacji ruchu na stronie. Przeczytasz także o tym, jakie zagrożenia niesie ze sobą niewłaściwa procedura pozycjonowania.
* Sposób działania Google oraz innych wyszukiwarek
* Definiowanie fraz i słów kluczowych
* Wpływ linków przychodzących i wychodzących na pozycję strony
* Korzystanie z systemów wymiany linków
* Proces indeksacji witryny
* Zagrożenia związane z niewłaściwym pozycjonowaniem
* Wykorzystanie statystyk do śledzenia ruchu na stronie
* Sposoby reklamowania serwisu
Zwiększ oglądalność swojej witryny WWW!
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
Lustereczko, powiedz przecie,
kto jest najwspanialszy w necie?
* Tworzenie i wykorzystywanie odpowiedniego wizerunku oraz zarabianie na nim
* Budowanie pożądanych marek bez wielkich nakładów finansowych
* Interaktywne relacje z klientami
* Wykorzystanie Internetu do rozwoju biznesu
* Narzędzia kreowania wizerunku w sieci
Jak Cię widzą (w sieci), tak Cię piszą
Internet jest nie tylko rewolucyjnym medium, pierwszym o naprawdę masowym zasięgu działania. Stanowi on przede wszystkim fascynujący alternatywny świat. Działa jak magnes, co roku przyciągając nowych użytkowników. Niczym używka, wciąż odnotowuje wydłużenie czasu kontaktu z odbiorcą. I last but not least — Internet to niekończący się pasaż handlowy, wymarzone miejsce spotkań podaży i popytu.
Poznaj specyfikę światowej sieci WWW i znajdź w niej właściwe miejsce dla Twojej marki. E-marketing rządzi się własnymi prawami — z jednej strony bezustannie stawia firmy przed nowymi wyzwaniami, z drugiej zaś stale kreuje nowe narzędzia dotarcia do klienta. A są one naprawdę fascynujące: możliwość dowolnej personalizacji przekazu, olbrzymia ilość kanałów, a przede wszystkim atrakcyjne społeczności — ludzie młodzi, aktywni, hobbyści, biznesmeni oraz entuzjaści nowinek. Mogą oni zostać ambasadorami Twojej marki, ale mogą też ją zniszczyć. Dlatego musisz poznać zasady rządzące Internetem i jego społecznościami, a następnie zacząć budować instrumenty wywierania wpływu i wykorzystać je dla dobra Twojego produktu.
Internet ma przyszłość!
* Czym jest e-wizerunek i jak wpływa na sukces firm, produktów i ludzi?
* Narzędzia budowania image’u — strona WWW, fora internetowe, newslettery i inne.
* Sześć zasad skutecznego kreowania e-wizerunku.
* Grzechy główne działań internetowych.
* Marka jako efekt przemyślanej strategii wizerunkowej.
* Case studies
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
Rozpocznij przygodę z Visual C++!
* Jakie prawa rządzą programowaniem obiektowym?
* Jak tworzyć usługi systemowe?
* Jak dokumentować tworzony kod?
Microsoft Visual C++ jest zintegrowanym środowiskiem, pozwalającym na tworzenie aplikacji przy użyciu języków C, C++ lub C++/CLI. Zawiera ono wyspecjalizowane narzędzia, pomagające w wydajnym tworzeniu rozwiązań opartych o te języki. Pierwsza wersja Visual C++ została wydana w 1992 roku, a środowisko to jest bezustannie ulepszane. Najnowsze wydanie, z datą 2008, zostało opublikowane w listopadzie 2007 roku i wprowadziło wiele nowości — jak chociażby wsparcie dla technologii .NET 3.5. Niewątpliwie narzędzie firmowane przez giganta z Redmond jest jednym z najpopularniejszych, a używają go programiści z całego świata.
Dzięki tej książce również Ty możesz dołączyć do tego wybitnego grona. Po jej przeczytaniu będziesz miał wiedzę na temat środowiska programistycznego i platformy .NET. Poznasz podstawy programowania obiektowego, nauczysz się uzyskiwać dostęp do informacji zgromadzonych w bazach danych oraz korzystać z możliwości Internetu bezpośrednio w Twoich programach. Kolejne rozdziały przedstawiają interesujące tematy dotyczące obsługi wyjątków, programów wielowątkowych oraz sposobów tworzenia usług systemowych. Ostatni rozdział poświęcony został tak istotnej kwestii, jak dokumentowanie kodu — to czynność, o której wielu programistów zapomina. Jeżeli chcesz rozpocząć przygodę z Microsoft Visual C++, ta książka jest idealną lekturą dla Ciebie!
* Praca w zintegrowanym środowisku programistycznym
* Pojęcia związane z programowaniem obiektowym
* Uzyskiwanie dostępu do informacji zgromadzonych w bazach danych
* Wykorzystanie transakcji w pracy z danymi
* Sposoby integracji z siecią Internet
* Obsługa wyjątków
* Programowanie wielowątkowe
* Tworzenie grafiki oraz wykorzystanie multimediów
* Drukowanie w systemie Windows
* Tworzenie usług systemowych
* Dokumentowanie kodu programu
Wykorzystaj możliwości Microsoft Visual C++ 2008!
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
Poznaj możliwości iPhone’a!
* Jak rozpocząć pracę z iPhone’em?
* Jak wykorzystać możliwości przeglądarki Safari?
* Jak używać map?
Pojawienie się iPhone’a firmy Apple można bez wahania nazwać Rewolucją! Rewolucją przez duże "R". Nigdy wcześniej żaden nowy telefon nie wzbudził takich emocji. Nigdy wcześniej nie ustawiały się na wiele dni przed premierą kolejki pod salonami. Co sprawia, że ludzie szaleją za tym małym cudem techniki? Wielodotykowy (ang. multitouch) ekran, dostęp do tysięcy aplikacji, stabilny system operacyjny oraz elegancki, przykuwający uwagę wygląd to tylko niektóre z jego zalet.
Właśnie dzięki tej książce dowiesz się, co tak naprawdę potrafi Twój iPhone. Autor — niezawodny Scott Kelby — bez zbędnego zagłębiania się w szczegóły techniczne opowie Ci o możliwościach tego rewolucyjnego urządzenia. Zaprezentuje Ci m.in. sposoby wykonywania różnych operacji przy użyciu tego telefonu. Poznasz tajniki jego konfiguracji i synchronizacji z komputerem oraz metodę sprawdzania poziomu naładowania baterii. Nauczysz się wykorzystywać wszystkie możliwości przeglądarki Safari, czytnika poczty oraz terminarza. Dowiesz się również, jak odtwarzać klipy z YouTube, słuchać muzyki czy oglądać filmy. Książka ta jest zatem świetną pozycją zarówno dla początkującego użytkownika telefonu iPhone, jak również dla zaawansowanego — ten ostatni znajdzie tu informacje, które go zaskoczą i zachwycą! W końcu iPhone to zdolna i piękna bestia…
* Włączanie, usypianie, wyłączanie iPhone’a
* Wykorzystanie wbudowanego głośnika
* Obsługa ekranu
* Importowanie kontaktów
* Dodawanie numerów
* Połączenia konferencyjne
* Wyciszanie dzwonka
* Odbieranie i wysyłanie wiadomości e-mail
* Obsługa przeglądarki Safari
* Wykorzystanie kalendarza
* Odtwarzanie klipów z YouTube
* Używanie mapy
* Sprawdzanie prognozy pogody
* Importowanie i odtwarzanie muzyki
* Wykonywanie zdjęć
* Rozwiązywanie typowych problemów
Sprawdź, co potrafi Twój iPhone!
Uwiecznij świat, jakiego nie znałeś!
* Jaki sprzęt jest potrzebny do makrofotografii?
* Jak uzyskać duże powiększenia?
* Jak komponować efektowne zdjęcia?
Wiele osób nie zwraca uwagi na niepozorne, małe elementy otaczającego nas świata. Czyż nie warto pokazać im, co tracą? Wykonanie dobrego zdjęcia w skali makro to wyzwanie, ale zachwyt na twarzach oglądających jest wart wszelkich poświęceń. Właśnie dzięki makrofotografii można ujrzeć cudowny świat, niezauważalny na co dzień. Magiczny świat szczegółów!
Autor książki "Makrofotografia. Magia szczegółu " przedstawia ten temat w sposób przejrzysty i systematyczny. Dzięki tej publikacji zdobędziesz informacje dotyczące sprzętu potrzebnego do wykonania makrofotografii oraz sposobu kompozycji zdjęcia. Poznasz zagadnienia związane z właściwym doborem ostrości, a także takie pojęcia, jak głębia ostrości, długość ogniskowej, jasność obiektywu i wiele innych. Pozwolą Ci one na swobodne poruszanie się po świecie makrofotografii. Ponadto poszerzysz swoją wiedzę odnośnie doboru właściwego oświetlenia oraz programów odpowiednich do obróbki wykonanych zdjęć. Niewątpliwym atutem tej książki są pytania i zadania kontrolne, które pozwolą Ci zweryfikować zdobyte umiejętności. Jeżeli chcesz uwiecznić otoczenie w makrofotografii, ta pozycja będzie dla Ciebie nieocenionym źródłem informacji, a może nawet twórczej inspiracji!
* Sprzęt konieczny do wykonania makrofotografii
* Sposoby na uzyskanie dużych powiększeń
* Komponowanie zdjęć
* Zasady doboru kadru
* Uzyskiwanie właściwej ostrości
* Ograniczenia ostrości
* Dobór właściwego oświetlenia
* Metody pomiaru światła
* Doświetlanie zdjęć
* Narzędzia do edycji zdjęć
Odsłoń na fotografiach całe piękno szczegółu!
Naucz się korzystać z nowoczesnych narzędzi PowerShella
i usprawniaj żmudne zadania administracyjne!
* Jak skonfigurować środowisko PowerShella?
* Jak tworzyć aplety poleceń i jak ich używać?
* Jak korzystać z potoku danych?
Windows PowerShell to innowacyjne narzędzie do zarządzania systemem i przetwarzania skryptów dla serwerów oraz klientów pod kontrolą Windows. Charakterystyczną cechą tego interpretera poleceń jest obiektowa logika, która sprawia, że wynikiem każdego polecenia jest obiekt określonego typu. Dodatkowo wszystkie funkcje dostępne przez API systemu są możliwe do wywołania z poziomu PowerShella. Dzięki swojej uniwersalności oraz nowoczesnym narzędziom interpreter ten zapewnia spójny oraz jasny mechanizm zarządzania, oparty na wierszu poleceń i niewymagający od użytkownika dużej wiedzy programistycznej.
Książka "Windows PowerShell. Podstawy" zawiera dokładny opis innowacyjnej architektury PowerShella, zasad pisania skryptów oraz możliwości korzystania z podstawowych interfejsów systemowych: COM, WMI, ADSI i ADO.NET, a także obszerny zbiór opisów rozwiązań konkretnych zadań administracyjnych. Korzystając z tego przewodnika, poznasz funkcje i narzędzia PowerShella. Nauczysz się również korzystać z obiektowego potoku danych i zarządzać procesami, dziennikami zdarzeń oraz wpisami rejestru. Dzięki zawartej tu wiedzy z pewnością usprawnisz i zautomatyzujesz wszelkie czasochłonne zadania administracyjne, by móc swobodnie stosować PowerShell jako podstawową konsolę do codziennej pracy.
* Aplety poleceń
* Przetwarzanie potokowe
* Potoki danych
* Uniwersalny model nawigacji
* Definiowanie dysków
* Język skryptów PowerShella
* Tablice asocjacyjne
* Praca ze skryptami
* Różnicowanie reakcji na błędy
* Biblioteki klas
* Narzędzia PowerShella
* Zarządzanie użytkownikami i grupami w Active Directory
* Bazy danych
* Zaawansowane operacje dostępu do danych
PowerShell skróci czas Twojej pracy!
Poznaj specyfikę języka Java i zostań mistrzem programowania
* Jak korzystać z bibliotek języka Java?
* Jak pisać funkcjonalny i klarowny kod?
* Jak stworzyć profesjonalny i efektowny program?
Język Java jest językiem obiektowym z dziedziczeniem jednobazowym. Wewnątrz każdej metody korzysta on ze zorientowanego na instrukcje stylu kodowania. Aby dobrze poznać jakikolwiek język, należy nauczyć się posługiwać jego regułami, zasadami i składnią — podobnie jest z językiem programowania. Jeśli chcesz zyskać możliwość efektywnego programowania w języku Java, powinieneś poznać struktury danych, operacje i udogodnienia, oferowane przez biblioteki standardowe, a także często stosowane i efektywne sposoby tworzenia kodu. Całą potrzebną Ci wiedzę znajdziesz właśnie w tym podręczniku.
W książce „Java. Efektywne programowanie” w sposób zrozumiały i klarowny przedstawiono zasady opisujące mechanizmy używane w najlepszych technikach programowania. Ten podręcznik podpowie Ci, jak najbardziej racjonalnie korzystać z języka Java oraz jego podstawowych bibliotek. Dowiesz się, jak stosować wyjątki przechwytywalne i wyjątki czasu wykonania, poznasz także zalety stosowania statycznych klas składowych. Opanujesz metody sprawdzania poprawności parametrów i projektowania sygnatur oraz wszelkie instrukcje, które pozwolą Ci na wydajne i profesjonalne programowanie.
* Tworzenie i usuwanie obiektów
* Klasy i interfejsy
* Zapewnianie niezmienności obiektu
* Projektowanie i dokumentowanie klas przeznaczonych do dziedziczenia
* Zalety stosowania statycznych klas składowych
* Typy ogólne
* Typy wyliczeniowe i adnotacje
* Metody
* Programowanie
* Wykorzystanie ogólnie przyjętych konwencji nazewnictwa
* Wyjątki
* Współbieżność i serializacja
* Dokumentowanie bezpieczeństwa dla wątków
Nie wystarczy samo poznanie języka Java. Trzeba wiedzieć, jak z niego efektywnie korzystać!
Rozpocznij swoją przygodę z JavaScript!
* Jak rozpocząć przygodę z JavaScript?
* Jakie obiekty dostarcza JavaScript?
* Jak reagować na błędy?
Język JavaScript, choć ma już blisko dwanaście lat, swoimi możliwościami wciąż potrafi zafascynować niejednego projektanta stron internetowych. Ma już za sobą gorsze dni, jednak aktualnie dzięki technologii AJAX znów jest na topie. Wykorzystując go w odpowiedni sposób, sprawisz, że twój serwis WWW stanie się bardziej interaktywny i dynamiczny.
Ta książka pozwoli Ci wyjść zwycięsko z pierwszego starcia z tym językiem! Dowiesz się z niej, jak używać zmiennych, operatorów oraz funkcji. Nauczysz się reagować na zdarzenia oraz wykorzystywać okna dialogowe. Ponadto zdobędziesz wiedzę na temat pracy z obiektami DOM HTML oraz na temat sposobów reagowania na błędy w skryptach. Autor przedstawia tu także dostępne obiekty JavaScript oraz pokazuje, jak wykonywać operacje związane z czasem. Ogromnym atutem tej książki jest przejrzystość i usystematyzowany sposób prezentowania informacji. Dzięki temu również Ty szybko i bezboleśnie poznasz JavaScript!
* Typowe konstrukcje języka JavaScript
* Wykorzystanie zmiennych
* Zastosowanie funkcji
* Reagowanie na zdarzenia
* Sposoby użycia okien dialogowych
* Wykonywanie operacji związanych z czasem
* Dostępne obiekty JavaScript
* Obiekty DOM HTML
* Przygotowanie własnych obiektów
* Dziedziczenie w JavaScript
* Obsługa błędów
Przejdź bezboleśnie pierwsze starcie z JavaScript!
Naucz się łączyć największe zalety języków oraz technik programowania
i twórz interaktywne strony internetowe
* Jak unikać typowych błędów i sprawnie rozwiązywać problemy programistyczne?
* Jak połączyć zalety HTML, XML i PHP dla uzyskania pożądanych efektów?
* Jak tworzyć aplikacje wyposażone w aktywny interfejs użytkownika?
Statyczne strony WWW to dziś już przeszłość. Powszechnie dostępne narzędzia dają programistom prawie nieograniczone możliwości w zakresie tworzenia interaktywnych witryn internetowych, wzbogaconych o najróżniejsze efekty wizualne, animacje oraz wbudowane narzędzia pomocnicze. Największą popularność zdobyły sobie narzędzia z kategorii open source — z powodu ich minimalnego kosztu oraz niezwykle dużych zasobów, dostępnych za pośrednictwem Internetu. Z tej książki dowiesz się, jak tworzyć bogate i interaktywne strony WWW, łącząc rozmaite techniki i korzystając z różnych języków.
Książka "Ajax, JavaScript i PHP. Intensywny trening" poprowadzi Cię krok po kroku po podstawowych zasadach programowania w językach JavaScript, PHP i HTML oraz technologiach programowania. Dzięki temu podręcznikowi dowiesz się m.in., jak wykorzystywać dostępne biblioteki ajaksowe do implementowania i ulepszania podstawowych mechanizmów aplikacji. Szybko nauczysz się tworzyć interaktywne strony WWW, zarówno za pomocą technologii serwerowych, jak i technik oraz narzędzi umiejscowionych po stronie klienckiej, a także ich kombinacji.
* Tworzenie stron WWW w języku HTML
* Stylizacja stron za pomocą arkuszy CSS
* Tworzenie skryptów w języku JavaScript
* Wbudowanie skryptu w stronę WWW
* Obiektowy model dokumentu (DOM)
* Obiekty String
* Instrukcje warunkowe i pętle
* Funkcje wbudowane i biblioteki
* Konstruowanie aplikacji ajaksowych
* Zmienne w języku PHP
* Funkcje liczbowe, łańcuchy i tabele
* Kontrola przepływu sterowania
* Usługi webowe oraz protokoły REST i SOAP
Łącz, kompiluj, dobieraj — niech Twoje strony WWW zrobią wrażenie!
Poznaj narzędzia programu PowerPoint i twórz wyjątkowe prezentacje!
* Jak stworzyć profesjonalną prezentację na każdą okazję?
* Jak modyfikować grafikę SmartArt?
* Jak korzystać z programu Clip Organizer i biblioteki slajdów?
Z pewnością wiesz, do czego służy program PowerPoint, lecz jeśli jeszcze nie potrafisz z niego korzystać, a musisz szybko przygotować profesjonalną prezentację, ta książka jest właśnie dla Ciebie! Znajdziesz tu opis ostatniej wersji programu — PowerPoint 2007. Umożliwia ona stworzenie zaawansowanej i bogatej prezentacji, wyposażonej w dźwięk, fotografie i animacje filmowe. Nowy PowerPoint pozwala także na bezpieczne udostępnianie Twojej prezentacji wszystkim zainteresowanym.
Książka "PowerPoint 2007 PL. Seria praktyk" to bogato ilustrowany, a przy tym prawdziwie intuicyjny podręcznik, dzięki któremu każdy nauczy się sprawnie korzystać z tej aplikacji. Kolor i zrzuty ekranowe ilustrujące kolejne informacje, jak również klarowne i zrozumiałe instrukcje sprawiają, że nauka staje się niezwykle prosta. Dzięki tej książce poznasz wszystkie niezbędne narzędzia PowerPointa i ciekawe funkcje tego programu. Dowiesz się, jak zastosować w swojej prezentacji grafiki SmartArt oraz zaawansowane układy slajdów, a także w jaki sposób korzystać z galerii stylów czy biblioteki slajdów.
* Tworzenie prezentacji
* Praca z tekstem
* Grafika i linie
* Konwersja na grafikę SmartArt
* Tabele i wykresy
* Używanie Excela 2007 — kopiowanie i wstawianie tabel
* Wzbogacanie prezentacji — animacje
* Multimedia
* Dodawanie filmów i dźwięku
* Tworzenie albumów
* Pokaz slajdów
* Nagrywanie narracji
* Udostępnianie prezentacji
* Bezpieczeństwo
PowerPoint jest dla każdego!
Poznaj narzędzia oraz funkcje Excela i z łatwością wykorzystuj tę wiedzę w pracy
* Jak tworzyć skoroszyty i wykresy?
* Jak zarządzać danymi w arkuszach?
* Jak szacować formuły?
Na samo brzmienie słowa "Excel" reagujesz paniką? Uważasz, że to bardzo skomplikowany i trudny w obsłudze program? Świetnie! Ta książka została napisana właśnie z myślą o Tobie! Podręcznik, który trzymasz w rękach, stanowi namacalny dowód na to, że Excel 2007 może być prosty, a nauka jego obsługi bardzo przyjemna! Choć trudno Ci w tej chwili w to uwierzyć, aplikacja ta oferuje cale spektrum nowoczesnych, a przy tym przyjaznych i intuicyjnych narzędzi oraz funkcji, dzięki którym znacznie usprawnisz i przyspieszysz swoją pracę. Naprawdę warto je poznać!
Książkę "Excel 2007 PL. Seria praktyk" przygotowano w taki sposób, aby każdy mógł nauczyć się korzystać z narzędzi Excela, tworzyć odpowiednie arkusze oraz wykonywać na nich praktyczne operacje. Wszystkie porady i instrukcje napisane zostały prostym, zrozumiałym językiem. Dzięki temu szybko opanujesz sposoby zarządzania danymi czy szacowania formuł w tym programie. Wszystkie omawiane zagadnienia zilustrowane są ułatwiającymi zrozumienie zrzutami ekranowymi, a kolorowy druk znacznie uprzyjemni Ci korzystanie z książki. Wystarczy ją przeczytać, a poznasz Excela w stopniu pozwalającym Ci na swobodną pracę w tym programie. Na co zatem czekasz? Przed Tobą nauka takich zagadnień, jak:
* Tworzenie skoroszytu
* Wprowadzanie danych do arkusza i zarządzanie nimi
* Formuły i funkcje
* Tabele i wykresy
* Konwersja tabeli do postaci zakresu
* Zaawansowane funkcje
* Szacowanie formuł
* Zarządzanie Excelem
* Makra
* Szablony i scenariusze
* Łącza i odwołania
* Stosowanie aktualizacji
Najprostszy i najprzyjemniejszy sposób na poznanie Excela!
Poznaj praktyczne możliwości programu Access 2007!
* Jak właściwie zaprojektować bazę danych?
* Jak korzystać z szablonów?
* Jak tworzyć tabele i definiować relacje między nimi?
Wbrew pozorom nie trzeba być specjalistą, żeby korzystać z Accessa! Jest to program wyjątkowo przyjazny dla użytkownika, umożliwiający tworzenie baz danych i zarządzanie nimi bez potrzeby dogłębnego poznawania języka SQL oraz skomplikowanych środowisk serwerowych. Aplikacja pozwala na zapisywanie danych z wykorzystaniem formularzy, kierowanie zapytań do bazy, a także dzielenie danych ze współpracownikami za pośrednictwem sieci komputerowej.
Książka "Access 2007 PL. Seria praktyk" zawiera zwięzły i czytelny opis wszystkich najważniejszych funkcji tego programu, a także konkretne przykłady i jasne instrukcje zastosowania narzędzi Accessa. Kolorowe strony pozwalają na szybkie odnalezienie interesujących Cię zagadnień. Dzięki temu podręcznikowi poznasz podstawowe zasady tworzenia dobrego projektu bazy danych oraz jej zaawansowane możliwości. Nauczysz się tworzyć tabele, formularze i raporty, a także korzystać z kluczy podstawowych i obcych. Bez problemu zbudujesz taką bazę danych, która pozwoli Ci sprawnie zarządzać informacjami.
* Personalizacja Accessa 2007
* Projektowanie baz danych
* Relacyjne bazy danych
* Klucze podstawowe i obce
* Tworzenie tabel
* Korzystanie z typów danych
* Definiowanie relacji
* Kwerendy
* Korzystanie z SQL
* Tworzenie i dostrajanie formularzy
* Tworzenie raportów
* Współdzielenie Accessa
Naucz się korzystać z Accessa — zachwycą Cię jego możliwości!
Odkryj bogactwo funkcji Worda!
Jak poprawnie formatować i uatrakcyjniać dokumenty?
Chcesz zacząć sprawnie tworzyć w programie Word dokumenty o profesjonalnym wyglądzie? A może tak dobrze go już znasz, że wątpisz, by skrywał przed Tobą jeszcze jakiekolwiek tajemnice? Tak czy inaczej warto opanować wszystkie potężne możliwości najpopularniejszego edytora tekstów, różne sposoby pracy z nim i metody tworzenia dokumentów tekstowych. Uzbrojony w taką wiedzę, z pewnością będziesz pracował szybciej i sprawniej.
Książka "Word 2007 PL. Seria praktyk" jest graficznym przewodnikiem po najnowszej wersji Worda i zawiera dokładny opis jego funkcji podstawowych oraz zaawansowanych — począwszy od tworzenia i formatowania tekstów, a na złożonych makrach skończywszy. Wszystko to przedstawione zostało za pomocą przejrzystych, kolorowych i szczegółowych instrukcji oraz praktycznych przykładów. Dzięki temu podręcznikowi poznasz całe spektrum narzędzi Worda i udoskonalisz swoją pracę z tym programem.
* Narzędzia główne
* Formatowanie tekstu
* Szybkie style
* Praca z dokumentem
* Drukowanie i publikowanie
* Konwersja do formatu PDF
* Biblioteka ClipArt i SmartArt
* Hiperłącza i zakładki
* Równania
* Zaawansowane funkcje — podpis cyfrowy
* Makra
Opanuj wszystkie narzędzia Worda i ciesz się swobodą tworzenia dokumentów!
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
Dołącz do kreatorów nowych trendów! Stwórz własny serwis społecznościowy!
* Pierwsze kroki w roli twórcy serwisu — rodzaje stron, prawo i reklama
* Skrypty, instalacja i administracja — PHPizabi, Elgg, Dolphin, Joomla!
* ABC moderatora i użytkownika — regulamin, trolle, zakres ingerencji
Serwisy społecznościowe są bodaj najszybciej rozwijającą się dziś częścią internetu. Nie sposób przecenić ich roli społecznej i opiniotwórczej. Liczba użytkowników i ich poczucie wspólnoty decydują o sile i prężności tych serwisów. W każdej chwili możesz przyłączyć się do któregoś z nich. Jednak znacznie więcej radości sprawiłoby Ci na pewno prowadzenie własnego serwisu, wokół którego skupiałaby się cała społeczność osób o zainteresowaniach podobnych do Twoich.
W książce "Serwisy społecznościowe. Budowa, administracja i moderacja" znajdziesz wszelkie informacje dotyczące tworzenia i obsługi serwisu społecznościowego. Opisano w niej początki tego zjawiska społecznego, podstawy jego działania, rozmaite odmiany serwisów, wszelkie kwestie prawne i techniczne. Niezależnie od tego, czy szukasz inspiracji odnośnie treści umieszczanych w serwisie, czy chciałbyś dowiedzieć się, jak rozwiązać konkretne problemy z konfiguracją, rejestracją, wyborem mechanizmu działania czy wyglądu Twojego serwisu, autorzy służą Ci rzetelną wiedzą, wskazówkami i podpowiedziami. Oprócz tego wprowadzą Cię w kwestie związane z bezpieczeństwem w sieci, rolą moderatora i rozwiązywaniem problemów z użytkownikami.
* Społeczności internetowe
* Serwisy społecznościowe (historia, rodzaje, reklama)
* Regulacje prawne
* Wybór domeny i hostingu
* Niezbędne narzędzia (klient FTP, edytory CSS i tekstowe)
* Serwis społecznościowy a forum dyskusyjne
* Bezpieczeństwo serwisu
* Skrypty (PHPizabi, Elgg, Dolphin, Joomla!, BuddyPress, Joovili, SocialEngine i wiele innych)
* Online-Community-Building
* Skrypty do budowy serwisu wideo (ClipBucket Lite, Clipshare, ClipHouse i wiele innych)
* Rola moderatora
* Social shopping
Sprawdź, jak wiele satysfakcji daje własny serwis społecznościowy!
AutoCAD to program do komputerowego wspomagania projektowania, który od lat wyznacza standardy na rynku takich aplikacji. Z jego możliwości korzystają projektanci różnych branż, a ogromna liczba bibliotek, modułów i nakładek sprawia, że realizacja nawet najbardziej złożonych projektów przebiega szybko i sprawnie. Każda kolejna wersja AutoCAD-a jest bardziej rozbudowana. W wersji 2008 autorzy aplikacji zadbali o optymalizację znanych już użytkownikom narzędzi i zwiększenie produktywności pracy. Zmodernizowany interfejs użytkownika oraz nowe możliwości docenią nie tylko profesjonaliści, ale również ci, którzy stawiają pierwsze kroki w świecie komputerowego wspomagania projektowania.
Książka "AutoCAD 2008 i 2008 PL" to wyczerpujące omówienie najnowszej edycji tej aplikacji. Każdy użytkownik AutoCAD-a, niezależnie od stopnia zaawansowania, znajdzie w niej interesujące informacje. Czytając tę książkę, nauczysz się tworzyć i modyfikować rysunki, wymiarować je, korzystać z warstw, bloków i stylów oraz drukować projekty. Poznasz zasady modelowania bryłowego, tworzenia szablonów oraz rysowania w trybie aksonometrycznym. Każde z narzędzi dostępnych w aplikacji jest dokładnie omówione, a ilustrowane przykłady ułatwiają poznanie ich w praktyce.
* Interfejs użytkownika, menu i paski narzędzi
* Praca z dokumentami
* Układy współrzędnych
* Tworzenie podstawowych obiektów i definiowanie ich właściwości
* Napisy i tabelki
* Rysowanie precyzyjne
* Rysunek aksonometryczny
* Kreskowanie
* Naprawianie uszkodzonych rysunków
* Techniki wymiarowania, modyfikowanie wymiarów i style wymiarowe
* Modelowanie 3D i bryły ACIS
Poznaj najnowszą wersję narzędzia, które zrewolucjonizowało pracę projektantów na całym świecie.
Zobacz, jakie to proste — naucz się tworzyć bazy danych!
* Jak tworzyć formularze i raporty?
* Jak modyfikować strukturę tabel?
* Jak stosować mechanizmy wymiany danych?
Współczesny świat wymusza na przedsiębiorstwach gromadzenie oraz przetwarzanie ogromnej ilości informacji. To sprawia, że muszą one dysponować wydajnymi i sprawnymi bazami danych. Aby zbudować taki system zarządzania danymi, niezbędne są odpowiednie narzędzia — jednym z nich jest program MS Access. Ta aplikacja przede wszystkim pozwala na łatwą kontrolę poprawności tworzonych projektów oraz zapewnia integrację narzędzi służących do tworzenia struktury relacyjnej. Dba także o zgodność tych narzędzi ze standardem języka zapytań SQL, wykorzystywanym do tworzenia i modyfikowania baz danych oraz operowania na zgromadzonych w nich informacjach.
Książka „Bazy danych. Pierwsze starcie” stanowi doskonałe wprowadzenie w tematykę tworzenia baz danych. Zawiera wszystkie potrzebne informacje, podane w prosty i przejrzysty sposób. Ten podręcznik przyda się zarówno studentom kierunków informatycznych, jak i wszystkim tym, którzy chcą zdobyć wiedzę o nowoczesnych metodach budowania takich baz. Stąd dowiesz się m.in., jak wykorzystywać język zapytań SQL, w jaki sposób tworzyć tabele, formularze i raporty oraz stosować mechanizmy wymiany danych, a także na czym polega filtrowanie i sortowanie w zapytaniach. Zdobędziesz wiedzę i umiejętności wystarczające do samodzielnego zbudowania wydajnej bazy danych i sprawnego nią zarządzania.
* Projektowanie bazy danych — narzędzia wizualne
* Tworzenie formularzy i raportów
* Strukturalny język zapytań SQL w wersji MS JetSQL
* Składnia podstawowa
* Unia — koniunkcja zbiorów
* Grupowanie i funkcje agregujące
* Zastosowanie języka SQL z poziomu formularzy
* Mechanizmy wymiany danych
* Obiekty: DAO, RDO, ADO
* Zastosowanie mechanizmów wymiany danych przy tworzeniu aplikacji
Stwórz własną, niezawodną bazę danych!
Wkrocz w świat projektowania 3D
* Jak definiować parametry projektu?
* W jaki sposób korzystać z narzędzi projektowych?
* Jak generować dokumentację techniczną?
Inventor, opracowany i sprzedawany przez firmę Autodesk, to program typu CAD, pozwalający na zamodelowanie projektowanego urządzenia lub elementu w postaci bryły trójwymiarowej. W oparciu o tak zamodelowaną bryłę Inventor umożliwia wygenerowanie pełnej dokumentacji projektowej — rysunków wykonawczych i złożeniowych, wykazu części i innych. Aplikacja pozwala także na przeprowadzenie symulacji i analizy działania projektowanego urządzenia.
"Inventor. Pierwsze kroki " to podręcznik dla wszystkich osób, które chcą poznać możliwości tej aplikacji i wykorzystać je w swojej pracy. Książka opisuje proces instalacji i konfiguracji programu oraz definiowania parametrów projektu. Pokazuje także kolejne kroki jego realizacji. Przeczytasz w niej o tworzeniu szkiców, definiowaniu wiązań, generowaniu modeli bryłowych i tworzeniu zespołów. Dowiesz się także, w jaki sposób wygenerować dokumentację techniczną w oparciu o gotowy model oraz jak zaprezentować elementy projektu w postaci animacji trójwymiarowej.
* Instalacja Inventora
* Konfiguracja interfejsu użytkownika
* Praca z oknami dialogowymi
* Tworzenie szkiców i wiązań
* Edycja obiektów graficznych
* Tworzenie brył trójwymiarowych
* Łączenie elementów w zespoły
* Tworzenie dokumentacji technicznej
* Prezentacja zespołów
Zrealizuj swoje wizje za pomocą Inventora!
Java. Programowanie, biblioteki open-source i pomysły na nowe projekty
1. IDZ DO
PRZYK£ADOWY ROZDZIA£
Java. Programowanie,
SPIS TREœCI
biblioteki open-source
KATALOG KSI¥¯EK i pomys³y na nowe projekty
Autor: Brian Eubanks
KATALOG ONLINE T³umaczenie: Grzegorz Borkowski
ISBN: 83-246-0624-6
ZAMÓW DRUKOWANY KATALOG Tytu³ orygina³u: Wicked Cool Java: Code Bits,
Open-Source Libraries, and Project Ideas
Format: B5, stron: 248
TWÓJ KOSZYK
Odkryj nieznane mo¿liwoœci Javy
DODAJ DO KOSZYKA • Sieci semantyczne i neuronowe
• Przetwarzanie grafiki i multimediów
• Obliczenia naukowe
CENNIK I INFORMACJE Java, mimo stosunkowo krótkiej obecnoœci na rynku, sta³a siê jednym z najpopularniejszych
jêzyków programowania. Codziennie korzystaj¹ z niej setki tysiêcy programistów z ca³ego
ZAMÓW INFORMACJE œwiata. Najwiêksze korporacje œwiata za jej pomoc¹ buduj¹ systemy informatyczne
O NOWOœCIACH przetwarzaj¹ce potê¿ne porcje danych. Aplikacje bazodanowe, serwlety i aplety to
najbardziej znane zastosowania Javy, jednak nie jedyne. W sieci dostêpna jest ogromna
ZAMÓW CENNIK iloœæ bibliotek tworzonych przez pasjonatów, którzy wykorzystuj¹ Javê do odmiennych
celów, takich jak przetwarzanie grafiki, modelowanie sieci neuronowych,
przeprowadzanie z³o¿onych obliczeñ i wielu innych zadañ.
CZYTELNIA Dziêki ksi¹¿ce „Java. Programowanie, biblioteki open-source i pomys³y na nowe projekty”
poznasz mniej znane zastosowania Javy. Dowiesz siê, jak za pomoc¹ bibliotek
FRAGMENTY KSI¥¯EK ONLINE
dostêpnych na licencji open-source tworzyæ ciekawe projekty i pisaæ nietypowe aplikacje.
Nauczysz siê przetwarzaæ pliki XML i HTML, obrabiaæ i generowaæ grafikê a tak¿e
wyœwietlaæ pliki multimedialne. Przeczytasz o sieciach semantycznych i neuronowych,
odczytywaniu kana³ów RSS i sterowaniu urz¹dzeniami pod³¹czonymi do komputera.
• Nieznane funkcje standardowego API Javy
• Przetwarzanie ³añcuchów tekstowych
• Analiza plików XML i HTML
• Stosowanie RDF w projektach
• Czytanie kana³ów RSS
• Obliczenia o dowolnej precyzji
• Realizacja algorytmów genetycznych
Wydawnictwo Helion • Symulowanie sieci neuronowych
ul. Koœciuszki 1c • Generowanie plików SVG
44-100 Gliwice • Wspó³praca z interfejsem MIDI
tel. 032 230 98 63
e-mail: helion@helion.pl Jeœli lubisz eksperymentowaæ z jêzykami programowania,
ta ksi¹¿ka bêdzie dla Ciebie doskona³ym Ÿród³em inspiracji
2. PODZIĘKOWANIA ...................................................................................... 9
WSTĘP ....................................................................................................... 11
1
STANDARDOWE API JAVY ....................................................................... 15
Użycie nowej wersji pętli for .................................................................................................16
Wykorzystanie konstrukcji enum ...........................................................................................18
Mapy bez rzutowania w dół ...................................................................................................21
Pisanie metod z parametrami generycznymi .........................................................................22
Metody ze zmienną liczbą parametrów .................................................................................25
Asercje w Javie .......................................................................................................................27
Użycie System.nanoTime .......................................................................................................29
Uśpienie wątku na czas krótszy od milisekundy ....................................................................30
Klasy anonimowe ...................................................................................................................31
Porównania == != .equals ...................................................................................................33
Podsumowanie .......................................................................................................................35
2
NARZĘDZIA DO PRACY Z ŁAŃCUCHAMI TEKSTOWYMI ....................... 37
Użycie wyrażeń regularnych do wyszukiwania tekstów ........................................................38
Użycie metody String.split .....................................................................................................40
Wyszukiwanie fragmentów w łańcuchach tekstowych ..........................................................41
Użycie grup w wyrażeniach regularnych ................................................................................42
Wykonywanie zamiany tekstów za pomocą wyrażeń regularnych ........................................44
Przetwarzanie z użyciem klasy Scanner .................................................................................47
Analiza skomplikowanej składni przy użyciu klasy Scanner ....................................................49
Generowanie przypadkowego tekstu ....................................................................................51
Drukowanie zawartości tablic w Javie 1.5 ..............................................................................52
Kodowanie i dekodowanie danych binarnych ........................................................................54
3. Formatowanie tekstów za pomocą MessageFormat ............................................................. 57
Powrót funkcji printf — formatowanie tekstów z klasą Formatter ...................................... 58
Podsumowanie ...................................................................................................................... 59
3
PRZETWARZANIE XML I HTML ................................................................61
Szybkie wprowadzenie do XML ............................................................................................ 62
Użycie WebRowSet do utworzenia dokumentu XML .......................................................... 63
Zapamiętywanie zależności między elementami w SAX ....................................................... 64
Bezpośrednie wywoływanie zdarzeń obiektu ContentHandler ............................................ 69
Filtrowanie zdarzeń interfejsu ContentHandler .................................................................... 71
Czytanie dokumentów XML z wykorzystaniem DOM4J ...................................................... 74
Użycie XPath do łatwego pobierania danych ........................................................................ 76
Niewidoczne tagi, czyli filtrowanie dokumentu przed załadowaniem do DOM4J ................ 80
Generowanie kodu analizatorów za pomocą JavaCC ........................................................... 83
Konwersja innych gramatyk na XML ..................................................................................... 87
Wykorzystanie techniki screen scraping do stron HTML ...................................................... 93
Wyszukiwanie z Lucene ........................................................................................................ 95
Podsumowanie ...................................................................................................................... 97
4
SIEĆ SEMANTYCZNA ................................................................................99
Krótkie wprowadzenie do N3 i Jena ................................................................................... 101
Tworzenie słowników RDF na własne potrzeby ................................................................. 103
Użycie hierarchii RDF w Jena .............................................................................................. 106
Dołączanie Dublin Core do dokumentów HTML ............................................................... 108
Zapytania w Jena RDQL ...................................................................................................... 109
Lojban, RDF i projekt Jorne ................................................................................................. 111
RSS i Informa ....................................................................................................................... 113
Czytanie źródeł RSS ............................................................................................................ 115
Odpytywanie i aktualizacja kanałów RSS ............................................................................. 116
Filtrowanie danych RSS ........................................................................................................ 117
Podsumowanie .................................................................................................................... 119
5
ZASTOSOWANIA W NAUKACH ŚCISŁYCH
I MATEMATYCZNO-PRZYRODNICZYCH ................................................121
Tworzenie i zastosowanie funktorów ................................................................................. 122
Użycie funktorów złożonych ............................................................................................... 125
Bity dużego kalibru — BitVector z biblioteki Colt .............................................................. 126
Tworzenie tablic prawdy za pomocą BitMatrix ................................................................... 128
Dwa terafurlongi w dwa tygodnie — wielkości fizyczne z JScience .................................... 130
Krnąbrne ułamki — arytmetyka dowolnej precyzji ............................................................. 133
Funkcje algebraiczne w JScience .......................................................................................... 135
Łączenie tablic prawdy za pomocą portów ......................................................................... 136
Łączenie za pomocą JGraphT .............................................................................................. 139
6 Spis treści
4. Łączenie ogólnych jednostek obliczeniowych ......................................................................141
Budowanie sieci neuronowych z Joone ................................................................................144
Użycie JGAP do algorytmów genetycznych .........................................................................146
Tworzenie inteligentnych agentów przy użyciu Jade ...........................................................149
Język angielski z JWorkNet ..................................................................................................153
Podsumowanie .....................................................................................................................155
6
PRZETWARZANIE GRAFIKI I WIZUALIZACJA DANYCH ....................... 157
Definiowanie graficznego interfejsu aplikacji Javy w XML ...................................................158
Wizualizacja danych w SVG ..................................................................................................160
Wyświetlanie obrazów SVG .................................................................................................163
Konwersja JGraphT do JGraphView .....................................................................................164
Użycie map atrybutów w JGraph .........................................................................................166
Tworzenie wykresów z JFreeChart .....................................................................................167
Tworzenie raportów w Javie ...............................................................................................169
Prosta dwuwymiarowa wizualizacja danych ........................................................................171
Użycie transformacji afinicznych w Java 2D .........................................................................174
Budowanie aplikacji graficznych z funkcją „zoom” na pomocą Piccolo ...............................176
Podsumowanie .....................................................................................................................177
7
MULTIMEDIA I SYNCHRONIZACJA WĄTKÓW ....................................... 179
Tworzenie muzyki z JFugue .................................................................................................180
Użycie JFugue razem z Java Sound MIDI ..............................................................................181
Wysyłanie zdarzeń do urządzeń wyjściowych MIDI ............................................................183
Tworzenie dźwięków w JMusic ...........................................................................................184
Użycie szumu i skomplikowanej syntezy w JMusic ..............................................................186
Niskopoziomowy dostęp do Java Sound ..............................................................................189
Czytanie dźwięku z linii wejściowej .....................................................................................191
Użycie Java Speech do tworzenia mówiących programów ..................................................192
Odśmiecacz i Javolution .......................................................................................................193
Synchronizacja wątków za pomocą CyclicBarrier ................................................................196
Podsumowanie .....................................................................................................................197
8
ROZRYWKA, INTEGRACJA I POMYSŁY NA NOWE PROJEKTY .............. 199
Użycie Javy do sterowania robotem LEGO .........................................................................200
Kontrolowanie myszy z użyciem klasy AWT Robot .............................................................201
Wybór dat z pomocą JCalendar ...........................................................................................202
Użycie klasy HttpClient do obsługi metody POST ..............................................................203
Symulacja systemu Cell Matrix w Javie .................................................................................204
Cell Matrix i algorytmy genetyczne ......................................................................................206
Uruchamianie aplikacji z Ant ................................................................................................207
Skrypty BeanShell .................................................................................................................208
Tworzenie testów JUnit .......................................................................................................210
Spis treści 7
5. Użycie JXTA w aplikacjach Peer-to-Peer ............................................................................ 211
Pakiet narzędziowy Globus oraz sieci rozproszone ............................................................ 212
Użycie Jabbera w aplikacjach ............................................................................................... 212
Pisanie w języku asemblera JVM .......................................................................................... 213
Połączenie programowania genetycznego z BCEL ............................................................. 214
Kompilowanie innych języków do kodu Javy ....................................................................... 215
Wizualizacja gramatyki języka Lojban .................................................................................. 215
Edytor instrumentów muzycznych ...................................................................................... 216
WordNet Explorer .............................................................................................................. 216
Automatyczny generator RSS .............................................................................................. 217
Sieci neuronowe w robotach ............................................................................................... 217
Narzędzie zarządzania metadanymi (adnotacjami) Javy 5 ................................................... 218
CVS i kontrola kodu źródłowego ........................................................................................ 218
Wykorzystaj SourceForge do swoich projektów ................................................................ 219
Posumowanie ...................................................................................................................... 219
SŁOWNICZEK ...........................................................................................221
SKOROWIDZ ............................................................................................235
8 Spis treści
6. .
ZADZIWIAJĄCY JEST FAKT, ŻE W WIELU KRĘGACH NAUKOWYCH
FORTRAN WCIĄŻ SPRAWUJE NIEPODZIELNĄ WŁADZĘ (WIEM, WIEM, TEŻ
MNIE TO PRZERAŻA). PRZYCZYNĄ TEGO STANU RZECZY NIEKONIECZNIE
jest to, że Fortran jest wspaniałym językiem programowania, lecz raczej
fakt, że jego standardowe biblioteki dostarczają ogromny zbiór operacji matema-
tycznych, z których korzysta wielka rzesza istniejących programów. Java istnieje
od ponad dekady, działa na większej liczbie dostępnych platform, ma standardowe
API o bogatszych możliwościach i pozwala robić rzeczy niemożliwe w Fortra-
nie. Dlaczego więc Java nie jest tak popularna w aplikacjach dla nauk ści-
słych? Wynika to być może z faktu, że Java nie posiada dobrych bibliotek
7. matematycznych. Klasa java.lang.Math ma bardzo ograniczone możliwości, ale
ponieważ jest to klasa ze standardowej dystrybucji Javy, niektórzy programiści
aplikacji naukowych nie trudzą się zbytnio poszukiwaniem dodatkowych bi-
bliotek. Może po prostu uważają, że „masz to, co widzisz” (ang. „what you see
is what you get”). Ten obraz jednak się zmienia, gdyż powoli na scenę wkraczają
nowe biblioteki — istnieje obecnie wiele projektów typu open-source, w których
powstają naprawdę wspaniałe rozwiązania. W niniejszym rozdziale przyjrzymy się
niektórym matematycznym i naukowym bibliotekom dostępnym dla Javy. Wśród
zagadnień, w które się zagłębimy, znajdą się funktory, tablice prawdy, teoria
grafów, jednostki fizyczne, sieci neuronowe, algorytmy genetyczne i sztuczna
inteligencja.
JGA Według słownika internetowego Merriam-Webster (dostępnego pod adresem
www.m-w.com) funktor jest to „coś, co wykonuje funkcję lub operację”. Z punktu
JAVA 5+ widzenia programisty funktor to funkcja, która może być przekazana jako para-
metr i użyta jak każda inna zmienna. Wiele języków, jak na przykład C, posiada
wskaźniki na funkcje. Wskaźniki te przechowują adres pamięci, pod którym ulo-
kowana jest dana funkcja. W takich językach możesz przekazać funkcję do innej
funkcji i zastosować ją dla różnych argumentów — na przykład dla każdego
elementu kolekcji. Języki takie jak Scheme, Lisp czy Haskell używają czysto
funkcyjnego stylu programowania, bardzo wydajnego w pewnych zastosowaniach
(w szczególności w dziedzinie sztucznej inteligencji). Java nie posiada funkcji
w stylu Lispa czy C, ale możemy zaimplementować taki sposób działania za po-
mocą interfejsów i klas bazowych.
Generic Algorithms for Java to jedna z implementacji typu open-source obiek-
tów funkcyjnych. Mamy w niej do czynienia z klasami odpowiadającymi funktorom
przyjmującym zero, jeden lub dwa argumenty:
Generator Funktor bezargumentowy
UnaryFunctor Funktor jednoargumentowy
BinaryFunctor Funktor dwuargumentowy
Funktory te są zaprojektowane dla ścisłej współpracy z Javą 5, gdyż korzy-
stają z typów generycznych (ang. generics) (które zostały omówione w rozdziale 1.).
Klasa Generator jest w rzeczywistości zdefiniowana jako Generator<R>. Posiada
ona bezargumentową metodę gen, która zwraca obiekt typu R określony w kon-
struktorze klasy. Aby utworzyć funktor bezargumentowy, możemy użyć następu-
jącego kodu:
122 Rozdział 5
8. import net.sf.jga.fn.Generator;
public class CubeGenerator extends Generator<Double> {
double current = 0;
public Double gen() {
current = current + 1;
return current * current * current;
}
}
Widać tu wyraźnie sens nazwy Generator: napisana przez nas przykładowa
klasa generuje sześciany kolejnych liczb naturalnych. Oprócz możliwości two-
rzenia własnych generatorów biblioteka JGA posiada zbiór gotowych generato-
rów dla tworzenia wartości różnego typu: losowych, stałych lub wyliczanych.
Wartości zwracane przez generatory nie muszą być liczbami.
Klasą reprezentującą funktor jednoargumentowy jest klasa UnaryFunctor<T, R>.
Definiuje ona metodę fn, która przyjmuje parametr typu T i zwraca wartość
typu R. Możemy na przykład utworzyć predykat, pisząc funktor zwracający war-
tość typu Boolean. Stwórzmy klasę typu UnaryFunctor<Number, Boolean>, która
zwraca wartość true dla liczb parzystych:
public class EvenNumber extends UnaryFunctor<Number, Boolean> {
public Boolean fn(Number x) {
return (x.longValue() % 2) == 0;
}
}
Na razie wygląda to tak, jakbyśmy dokładali sobie pracy bez wyraźnych korzy-
ści. Jednakże zaletą takiego rozwiązania jest możliwość tworzenia nowych metod,
które jako parametr przyjmą dowolne funktory. Kolejny listing pokazuje, jak to
wygląda w praktyce:
public void removeMatches(List<Number> aList, UnaryFunctor<Number,Boolean>
functor) {
for (Number num : aList) {
if (functor.fn(num))
aList.remove(num);
}
}
Metoda ta usuwa wszystkie elementy z listy, dla których funktor typu Number
->Boolean zwraca true (a dokładnie Boolean.TRUE; w Javie 5 typy te są rów-
noważne). Prześledźmy teraz dwa sposoby napisania kodu usuwającego liczby
parzyste z listy:
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 123
9. List<Number> numbers = ... // wypełniamy listę jakimiś liczbami
// pierwszy sposób
for (Number aNumber : numbers) {
if (aNumber.longValue() % 2 == 0)
numbers.remove(aNumber);
}
// drugi sposób
removeMatches(numbers, new EvenNumber());
Metoda taka jak removeMatches może być bardzo użyteczną częścią biblio-
teki. Pozwala nam ona zastosować kolejno kilka funktorów typu UnaryFunctor
<Number,Boolean> na danej liście:
removeMatches(numbers, lessThan30000);
removeMatches(numbers, greaterThan10000000);
Możemy osiągnąć ten sam efekt, używając klasy Iterables, która dobrze na-
daje się do wykorzystania w pętlach „for each” wprowadzonych w Javie 5. Na
stronach JGA znajdziesz bardziej szczegółowe przykłady filtrowanych iteracji.
Oto krótki przykład pętli, która jest wykonywana wyłącznie na parzystych ele-
mentach danej listy:
UnaryFunctor<Number,Boolean> even = new EvenNumber();
List<Number> numbers = ...; // dowolne wypełnienie listy
for (Number aNumber : Iterables.filter(numbers, even)) {
System.out.println(aNumber);
}
Klasa Algorithms obejmuje implementacje niektórych popularnych algorytmów,
które wykorzystują funktory. Następny przykład używa dwóch z tych algorytmów:
forEach stosuje funktor unarny dla każdego elementu z listy, a removeAll usuwa
wszystkie elementy pasujące do predykatu:
import net.sf.jga.util.Algorithms;
List<String> aList = ...; //wypełniamy listę
// usuwamy wszystkie wartości równe null
UnaryFunctor<Object,Boolean> isNull = new UnaryFunctor<Object,Boolean>() {
public Boolean fn(Object o) {return o == null;}
};
Algorithms.removeAll(aList, isNull);
// przycinamy łańcuchy tekstowe
UnaryFunctor<String,String> trimmer = new UnaryFunctor<String,String>() {
public String fn(String s) {return s.trim();}
};
Algorithms.forEach(aList, trimmer);
124 Rozdział 5
10. Jeżeli nie chcesz modyfikować oryginalnej listy, możesz utworzyć iterator
przeglądający oryginalne wartości i zwracający zmodyfikowaną wartość każdego
elementu lub ignorujący wartości null. Programowanie funkcjonalne jest bar-
dzo użytecznym narzędziem programisty Javy. W następnej części użyjemy nieco
bardziej zaawansowanych cech omawianego API.
JGA W poprzedniej części użyliśmy funktorów do filtrowania danych wejściowych
dla pętli for, eliminując tym samym potrzebę filtrowania danych w samej pętli.
JAVA 5+ JGA posiada funkcje pomocnicze służące tworzeniu złożonych funktorów i są
one wbudowane automatycznie w każdy unarny i binarny funktor. Klasa Unary-
Functor posiada metodę compose, która zwraca nowy funktor będący złożeniem
z wewnętrznym funktorem. Kiedy widzisz metodę compose, traktuj ją jak funkcję
złożoną: f.compose(g) oznacza „funkcję f funkcji g”. Innymi słowy, możesz utwo-
rzyć funktor h z dwóch funktorów f i g, tak że h=f(g(x)), za pomocą następują-
cego kodu:
UnaryFunctor f,g;
UnaryFunctor h = f.compose(g);
Kiedy wywołamy metodę fn funktora h, zostanie faktycznie użyte złożenie
dwóch funktorów. Klasa BinaryFunctor ma podobną metodę compose dla składania
jej z innymi funktorami unarnymi i binarnymi. Możemy utworzyć w ten sposób
łańcuch elementów o dowolnej długości. Możemy również przesłać wyjście
z generatora do funkcji złożonej, używając pomocniczej klasy Generate. Spróbuj-
my użyć tej metody do stworzenia złożonego generatora wytwarzającego szereg
logarytmów kwadratów każdej co trzydziestej liczby naturalnej, zaczynając od 99.
Zacznijmy od napisania generatora zwracającego naturalne liczby ze skokiem
równym 30, a potem będziemy dodawać dalszą część bazując już na nim:
Generator<Number> every30thFrom99 = new Generator<Number>() {
long count = 99;
public Number gen() {
long result = count;
count += 30;
return result;
}
};
UnaryFunctor<Number,Number> log = new UnaryFunctor<Number,Number>() {
public Number fn(Number in) {
double val = in.doubleValue();
return Math.log(val);
}
};
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 125
11. UnaryFunctor<Number,Number> square = new UnaryFunctor <Number,Number>() {
public Number fn(Number in) {
double val = in.doubleValue();
return val*val;
}
};
Generate<Number,Number> logOfSquareOfEvery30thFrom99 =
new Generate(log.compose(square), every30thFrom99);
Zagnieżdżanie funkcji nie jest ograniczone do liczb. Funkcje złożone mogą
działać na obiektach dowolnego typu (na przykład String, Employee, Automobile,
WebRowSet). Widzimy teraz, dlaczego tworzenie funktorów na możliwie niskim
poziomie jest ważne — możemy potem je łączyć i wykorzystywać w innym
kontekście. Zanim napiszesz nowy funktor, sprawdź, czy nie dasz rady osiągnąć
tego samego efektu, łącząc kilka istniejących. W chwili pisania tej książki oma-
wiane API było wciąż w fazie „beta”, więc pewne rzeczy mogą ulec jeszcze zmia-
nie — dla pewności sprawdź więc dokumentację dostępną w internecie.
COLT Co mają wspólnego ze sobą matematyka, pistolety, konie i alkohol? Otóż okazuje
się, że oprócz producenta broni, gatunku alkoholu i nazwy młodego konia „colt”
JGA jest również nazwą API matematyczno-fizycznego. API to zostało stworzone
w tym samym miejscu, gdzie narodziła się Sieć — w CERN, laboratorium
cząstek elementarnych w Szwajcarii. Strona CERN-u opisuje Colt jako „wydajne
i użyteczne struktury danych oraz algorytmy dla przetwarzania danych, algebry
liniowej, tablic wielowymiarowych, statystyk, histogramów, symulacji Monte Carlo,
programowania równoległego i współbieżnego zarówno online, jak i offline”.
W tej części rozdziału przyjrzymy się jednej z pomocniczych klas z biblioteki
Colt, BitVector. Będziemy modelować funkcję logiki cyfrowej, tworząc funktor
(jak to omawialiśmy wcześniej), który działa na wartościach typu BitVector. Jest
to trochę inna sytuacja od tej, z którą mieliśmy do czynienia poprzednio, gdy
używaliśmy predykatów logicznych. Obecnie będziemy starali się modelować
funkcję mającą wiele bitów zarówno na wejściu, jak i na wyjściu. Nasza funkcja
ma przyjmować uporządkowany zbiór bitów i wytwarzać inny uporządkowany
zbiór bitów. Standardowa dystrybucja Javy dostarcza klasę BitSet w celu pracy
ze zbiorem bitów. Choć ta klasa może być użyteczna w wielu aplikacjach, ma
wiele wad, gdy zostanie użyta do modelowania funkcji logicznych. Po pierwsze,
nie zapewnia ona stałego rozmiaru zbioru. Przykładowo, jeśli nasza funkcja mia-
łaby przyjmować pięć bitów na wejściu i zwracać trzy na wyjściu, potrzeba by
było przechowywać gdzieś w osobnych zmiennych rozmiary wektorów wejścia-
126 Rozdział 5
12. -wyjścia. Po drugie, BitSet nie posiada metody do przeliczania podzbioru bi-
tów na reprezentację w postaci liczby całkowitej. Klasa BitVector z biblioteki
Colt jest bardziej wydajna i lepiej przystosowana do modelowania funkcji tego
typu. Zacznijmy od prostego przykładu demonstrującego niektóre z możliwo-
ści tej klasy:
BitVector vec1000 = new BitVector(1000); // rozmiar = 1000 bitów
// początkowo wszystkie bity są ustawiane na false (0)
vec1000.set(378); // ustaw bit 378 na true (1)
System.out.println(vec1000.get(378)); // drukuje "true" na standardowym
wyjściu
vec1000.replaceFromToWith(1, 40, true); // ustawia bity od 1 do 40 na true
// zwróć bity z pozycji od 38 do 50 (włącznie)
BitVector portion = vec1000.partFromTo(38, 50);
//zwróć wartość typu long ciągu bitów 3-10
long longValue = portion.getLongFromTo(3,10);
Możemy użyć tych metod do symulacji bramek logicznych układów mikro-
elektronicznych stanowiących podstawowe cegiełki tworzące komputer. Przy-
kładem takich niskopoziomowych bramek są bramki AND, OR i NOT. Do ogólnej
reprezentacji bramki logicznej możemy wykorzystać instancję klasy BitVector
jako wejście i wyjście funktora. Chociaż Colt posiada własne funktory ogólnego
zastosowania, użyjemy tutaj API omówionego wcześniej, aby uniknąć nieporo-
zumień. Funktor dla bramki AND mógłby wyglądać tak:
public class UnaryBitVectorAndFunction extends
UnaryFunctor<BitVector,BitVector> {
public BitVector fn(BitVector in) {
int oneBits = in.cardinality(); // ile bitów jest ustawionych na 1
int size = in.size(); // rozmiar wektora
BitVector outVec = new BitVector(1); // jednobitowe wyjście
outVec.put(0, size == oneBits); // AND = same jedynki
return outVec;
}
}
W podobny sposób jesteśmy w stanie utworzyć funkcję logiczną dowolnego
typu. Zobaczmy jeszcze jeden przykład, tym razem z większą liczbą bitów na
wyjściu. Dekoder 1-do-4 (demultiplekser) jest blokiem logicznym z trzema wej-
ściami i czterema wyjściami. Demultiplekser przesyła sygnał z wejścia (D) na
jedno z czterech wyjść (Q0, Q1, Q2, Q3). O tym, które jest to wyjście, decydują
dwa bity sterujące (S0, S1). Tabela 5.1 pokazuje stan każdego z wyjść dla każdej
z możliwych kombinacji stanów wejść. Taką tabelę nazywa się tablicą prawdy.
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 127
13. Tabela 5.1. Tablica prawdy dla demultipleksera dwuwejściowego
D S1 S0 Q0 Q1 Q2 Q3
0 0 0 0 0 0 0
0 0 1 0 0 0 0
0 1 0 0 0 0 0
0 1 1 0 0 0 0
1 0 0 1 0 0 0
1 0 1 0 1 0 0
1 1 0 0 0 1 0
1 1 1 0 0 0 1
Pierwsze trzy kolumny przedstawiają stany na wejściu, pozostałe — na wyj-
ściu. Selektory S0 i S1 decydują, które wyjście przedstawia stan wejścia, a pozo-
stałe wyjścia są wyzerowane. Stwórzmy teraz model tego układu. Każdemu
sygnałowi trzeba przypisać indeks w obiekcie BitVector. W przypadku wejść
przyjmijmy, że indeks 0 odpowiada wejściu D, 1 — S0 i 2 — S1. Poniższy
obiekt UnaryFunctor tworzy czterobitowy wektor zawierający wartości sygnałów
wyjściowych:
public class QuadDemuxer extends UnaryFunctor<BitVector,BitVector> {
public BitVector fn(BitVector in) {
// czterobitowy wektor wyjścia, domyślnie wyzerowany
BitVector outVec = new BitVector(4);
// pobierz wartość wejścia D
boolean data = in.get(0);
if (data) {
// bity sterujące zwrócone jako zmienna int
int selector = (int) in.getLongFromTo(1,2);
outVec.set(selector);
}
return outVec;
}
}
W następnym podrozdziale rozszerzymy tę procedurę i utworzymy prostą
implementację tablicy prawdy dla funkcji logicznej.
COLT W poprzednim podrozdziale utworzyliśmy demultiplekser, specyficzny rodzaj
funkcji logicznej posiadającej wiele bitów wejściowych i wyjściowych. Aby wy-
jaśnić jej działanie, użyliśmy tablicy prawdy przedstawiającej wyjścia odpowia-
dające wszystkim kombinacjom wejść. Tablica prawdy działa tak jak słownik typu
128 Rozdział 5
14. klucz-wartość dla kluczy binarnych. Pewnie zauważyłeś również, że nasza tablica
prawdy wygląda jak macierz bitów. Możemy wykorzystać tę obserwację dla napi-
sania uniwersalnego modelu tablicy prawdy. W podrozdziale utworzymy ta-
blicę prawdy, używając klasy BitMatrix, dwuwymiarowego kuzyna znanej nam
BitVector, również z biblioteki Colt.
Wejściowe kombinacje bitów w tabeli są wymienione w kolejności rosnącej:
000, 001, 010, 011… Ponieważ kolejność bitów wejściowych w tablicach prawdy
jest zawsze taka sama, ta część tablicy jest zbędna — możemy zająć się wyłącznie
wyjściami. Liczba rzędów i kolumn bezpośrednio wynika z liczby wejść i wyjść.
W ostatnim przykładzie, mając 3 wejścia i 4 wyjścia, otrzymaliśmy 4 kolumny
i 8 rzędów. Liczba kolumn jest równa liczbie wyjść. Liczba rzędów jest równa 2n,
gdzie n oznacza liczbę wejść, ponieważ musimy uwzględnić wszystkie możliwe
kombinacje bitów na wejściu. Oczywiście pojedyncza tablica prawdy nie jest do-
brym pomysłem dla bardzo dużej liczby wejść. Jednakże złożone systemy mogą
być stworzone przez wzajemne powiązanie wielu prostszych komponentów, więc
nie jest to poważny problem.
Jeśli tylko pamiętasz kolejność bitów wejściowych, możesz przekonwertować
je na liczby całkowite i użyć jako indeksów dla rzędów zawierających bity wyjścio-
we. Zademonstrujmy to na przykładzie, tworząc macierz bitów typu BitMatrix
dla tablicy prawdy z tabeli 5.1:
int inputSize = 3;
int rows = 1 << inputSize; // 2**n rzędów, dla n bitów na wejściu
int outputSize = 4;
int columns = outputSize;
// tablica prawdy z wszystkimi bitami ustawionymi na 0
BitMatrix matrix = new BitMatrix(columns, rows);
// ustaw mapowanie wyjść dla przykładu z demultiplekserem
matrix.put(0, 4, true); // kolumna 0, rząd 4 = true (1)
matrix.put(1, 5, true);
matrix.put(2, 6, true);
matrix.put(3, 7, true);
// podaj bity na wyjściu dla wartości wejściowej 101 (5)
boolean Q0 = matrix.get(0, 5); // kolumna 0, rząd 5
boolean Q1 = matrix.get(1, 5); // kolumna 1, rząd 5
boolean Q2 = matrix.get(2, 5); // kolumna 2, rząd 5
boolean Q3 = matrix.get(3, 5); // kolumna 3, rząd 5
Aby z tablicy prawdy wydobyć parę wartości wejścia-wyjścia, trzeba dokonać
konwersji bitów wejściowych na liczbę całkowitą i użyć jej jako indeks rzędu za-
wierającego bity wyjściowe. Można czytać każdy bit z osobna jako wartość logiczną
lub przekonwertować na typ int lub long, aby użyć wszystkich bitów naraz. Nasza
tablica prawdy była łatwa do utworzenia, ponieważ zawiera niewiele jedynek,
prawdopodobnie wolałbyś jednak użyć jakiejś ogólnej metody pomocniczej, która
ustawia mapowanie wejść na wyjścia w pojedynczym wywołaniu. Następujące dwie
metody implementują ogólny sposób modyfikacji i dostępu do tablicy prawdy:
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 129
15. public void store(int inputVal, long out) {
int start = inputVal * outSize;
int end = start + outSize - 1; // włącznie
matrix.toBitVector().putLongFromTo(out, start, end);
}
public long retrieve(int inputVal) {
int start = inputVal * outSize;
int end = start + outSize - 1; // włącznie
long out = matrix.toBitVector().getLongFromTo(start, end);
return out;
}
Moglibyśmy również napisać wersje tych metod dla BitVector, używając kodu
z poprzedniej części. Powyższe funkcje wykorzystują dostęp do wewnętrznych
danych (BitVector) klasy BitMatrix. (Napisałem to w ten sposób, ponieważ Bit-
Matrix nie posiada wygodnej metody dostępu do całych rzędów). Pamiętaj, że
liczba bitów wejściowych powinna być utrzymana na niskim poziomie, ponieważ
rozmiar tablicy prawdy rośnie wykładniczo. Nie ma tu sprawdzania wartości wej-
ściowych i niewłaściwe dane spowodują wygenerowanie wyjątku. Bity wyjściowe,
które nie są używane, są ignorowane — wynika to ze sposobu, w jaki BitVector
konwertuje bity na wartości long. Pamiętaj też, że wartości wyjściowe i wejściowe
są przetwarzane przy założeniu, że najmniej znaczący bit jest bitem zerowym.
Wrócimy jeszcze do tablic prawdy, gdy utworzymy połączoną sieć bloków logicz-
nych posiadających swoje własne tablice prawdy.
JScience JScience jest kolejnym API typu open-source przeznaczonym do zastosowań
w naukach ścisłych i matematyczno-przyrodniczych. Jednym z celów JScience,
bardzo wzniosłym, jest utworzenie wspólnego API Javy dla wszystkich tych nauk.
Do najciekawszych jego cech należy model jednostek fizycznych (na przykład
masy, prędkości, temperatury, odległości). Za pomocą JScience możesz korzy-
stać ze stałych fizycznych takich jak prędkość światła czy stała Plancka, nie przej-
mując się, jakie jednostki są użyte w nich wewnętrznie. Konwersja między róż-
nymi systemami jest wyjątkowo łatwa, możesz również definiować swoje własne
stałe. W tej części pokażemy, jak korzystać z wbudowanych stałych, tworzyć
własne jednostki i używać klas opisujących wielkości.
W Stanach Zjednoczonych, poza kręgami naukowymi, większość ludzi używa
jednostek spoza układu metrycznego: stopni Fahrenheita, stóp, funtów. To często
powoduje różne niejasności, a nawet stało się przyczyną katastrofy jednego bez-
załogowego statku kosmicznego! Być może nie potrafimy rozwiązać definityw-
nie tego problemu, ale na szczęście programując w Javie, możemy definiować
130 Rozdział 5
16. wielkości, nie przejmując się jednostkami, jakie za nimi stoją. W JScience pod-
stawowe wielkości fizyczne mają własne klasy dziedziczące po wspólnej klasie
bazowej Quantity (Ilość). Oto przykłady kilku z nich, razem z ich jednostkami
w układzie SI:
■ długość (w metrach),
■ czas (w sekundach),
■ masa (w kilogramach),
■ temperatura (w kelwinach).
Klasy typu Quantity znajdują się w pakiecie javax.quantities. Klasy te zawie-
rają informacje o wielkościach, które mierzymy, i są dużo bardziej precyzyjne
(czyli zapewniają mniejsze prawdopodobieństwo błędów) niż zwykłe wartości
typu double do reprezentacji wartości numerycznych. W dowolnej aplikacji mie-
rzącej zwykłe wielkości, takie jak długość, możesz użyć jednej ze standardowych
klas JScience typu Quantity. Każda z tych klas przechowuje powiązaną z nią
jednostkę wielkości i dzięki temu może dokonywać automatycznych konwersji.
Jeśli piszesz aplikację zajmującą się komputerami, możesz napisać taką klasę
do reprezentacji możliwych konfiguracji:
public class ComputerConfig {
double length, width, height;
double mass;
int ram, rom, network;
}
W tej klasie jednostki fizyczne nie są przyporządkowane do zmiennych, brak
też wewnętrznej kontroli typów wielkości fizycznych. Na przykład nic nie stoi
na przeszkodzie, aby napisać tak:
length = mass;
W fizyce włożono ogromny wysiłek w stworzenie teorii unifikacji, ale mimo
to nie przypuszczam, żeby posunięto się aż tak daleko! Możemy zmienić klasę
ComputerConfig tak, aby używała ona rzeczywistych wielkości fizycznych:
import javax.quantities.*;
public class ComputerConfig {
Length length, width, height;
Mass mass;
DataAmount ram, rom;
DataRate network;
}
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 131
17. Teraz nasz program wie, że mamy tu trzy wielkości określające długość, jedną
opisującą masę, dwie określające pojemność pamięci i jedną — prędkość przesyłu
danych. Ma to jeszcze inną zaletę: możemy podawać i otrzymywać wartości wy-
rażone w dowolnych jednostkach, wciąż mając je przechowane w jednostkach
układu SI. Zobaczmy, jak to wygląda w praktyce — przypiszmy zmiennej wagę
w funtach i pobierzmy ją wyrażoną w kilogramach:
Measure<Mass> mass = Measure.valueOf(20, NonSI.POUND);
System.out.println(mass.to(SI.KILOGRAM));
Jak się pewnie domyślasz, próba użycia jednostki niezgodnej z typem zmien-
nej spowoduje zgłoszenie wyjątku. Większość jednostek układu metrycznego
znajdziesz w klasie SI, a pozostałe w klasie NonSI. Jeśli potrzebujesz jednostek,
które nie zostały dodane jeszcze do JScience, możesz zawsze stworzyć własne,
bazując na tych już istniejących.
Jedna z bardziej tajemniczych jednostek angielskiego układu miar nazywa się
furlong i równa jest jednej ósmej mili — lub inaczej 220 jardom1. Jednostki tej
nie znajdziemy w JScience, ale możemy łatwo ją utworzyć. Poniższy kod tworzy
taką jednostkę, jak również dodaje dla niej alias, aby mogła być użyta w dowol-
nym miejscu w aplikacji:
Unit<Length> furlong = NonSI.MILE.times(0.125);
UnitFormat.getStandardInstance().alias(furlong, "furlong");
UnitFormat.getStandardInstance().label(furlong, "furlong");
Quantity fiveFurlong = Measure.valueOf("5 furlong");
Tworzenie aliasów dla nowych jednostek pozwala używać ich później w opi-
sach wielkości fizycznych. Etykieta (ang. label) jest zaś stosowana przy wyświetla-
niu wartości. Wielkości i jednostki mogą być mnożone i dzielone w celu otrzyma-
nia jednostek takich wielkości fizycznych jak przyspieszenie (m*s–2). W kolejnym
przykładzie wyprowadzimy nową jednostkę i użyjemy jej do wyświetlenia pręd-
kości światła (c):
Measure<Velocity> c = Measure.valueOf(299792458, SI.METER_PER_SECOND);2
//słowo "fortnight" oznacza dwa tygodnie (14 dni)
Unit<Duration> fortnight = NonSI.DAY.times(14);
UnitFormat.getStandardInstance().alias(fortnight, "fortnight");
UnitFormat.getStandardInstance().label(fortnight, "fortnight");
Unit<Velocity> furlongperfortnight = (Unit<Velocity>)
furlong.divide(fortnight);
System.out.println(c.to(furlongperfortnight));
1
Około 200 metrów — przyp. tłum.
2
Co prawda w Science istnieje klasa org.jscience.physics.measures.Constants, w której zdefiniowano
prędkość światła c, ale klasa ta w obecnej wersji (3.1.6) niestety nie działa poprawnie.
132 Rozdział 5
18. Nasza nowa jednostka jest jednostką prędkości, gdyż jest definiowana jako
długość przez czas. Po uruchomieniu tego programu zobaczymy, że prędkość
światła w próżni wynosi 1 802 617 499 785 253 furlongi na dwa tygodnie, czyli
trochę mniej niż 2 terafurlongi na dwa tygodnie.
JScience Dwa razy dwa równa się 3,9999999998, jeśli wierzyć wynikom obliczeń prze-
prowadzonych na zmiennych typu double. Większość programistów Javy miała
okazję używać typów double i float. Być może miałeś do czynienia również z nie-
którymi metodami z klasy java.lang.Math. Klasa ta należy to najbardziej rdzen-
nych bibliotek Javy i zawiera metody dla operacji na funkcjach, takich jak wy-
kładnicze, logarytmiczne, trygonometryczne. Precyzja typu double wystarcza
dla większości zastosowań, jednak dla naukowych aplikacji jej 11-bitowa cecha
i 52-bitowa mantysa (oparte na typie zmiennoprzecinkowym podwójnej precyzji
według IEEE 754) może czasem spowodować drobne błędy i szybko urosnąć
do dużych problemów. Jest to szczególnie istotne w obliczeniach iteracyjnych,
gdy rezultat poprzedniej iteracji jest daną wejściową kolejnej.
Aby rozwiązać problem błędów zaokrąglenia w zastosowaniach matema-
tycznych, Java posiada dwie klasy dla operacji o dowolnej precyzji: BigDecimal
i BigInteger. BigInteger jest świetna do pracy z wyjątkowo dużymi liczbami.
(Ależ tak, zdaję sobie sprawę, że nazwa dokładnie na to wskazuje!) Wielkość tych
liczb jest ograniczona jedynie przez dostępną pamięć oraz prędkość procesora.
Liczba taka jak 9700 jest zbyt duża, aby przechowywać ją w zmiennej double lub
long, lecz nadaje się idealnie do zapamiętania w zmiennej typu BigInteger. Po-
dobnie BigDecimal może precyzyjnie przechować liczby takie jak 0,0123456
78987654321234567890123456, z którą nie poradzi sobie liczba o mantysie
52-bitowej. Następujący krótki przykład używa klas BigInteger oraz BigDecimal
do reprezentacji tych liczb:
BigInteger nine = new BigInteger("9");
BigInteger nineToSevenHunredth = nine.pow(700);
BigDecimal exactNumber = new BigDecimal("0.
012345678987654321234567890123456");
BigDecimal może reprezentować precyzyjnie dowolną liczbę, która ma skoń-
czone rozwinięcie dziesiętne. Jest to spełnione dla ułamków, które w mianow-
niku posiadają wielokrotności liczb 2 i 5, np. 1/2, 15/4, 127/20, lecz nie jest dla
liczb takich jak 1/3 (0,333333…) lub 5/7. Może to powodować kumulację błędów
zaokrąglenia w bardziej złożonych obliczeniach. W rzeczywistości wszystkie me-
tody klasy BigDecimal związane z dzieleniem wymagają parametru skalującego
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 133
19. określającego liczbę cyfr dziesiętnych, które powinny być zachowane w wyniku.
Rozważmy następujący przykład, w którym wyliczany jest ułamek 1/3 z dokład-
nością do 15 miejsc po przecinku (i zaokrąglany w razie potrzeby):
BigDecimal one = new BigDecimal("1");
BigDecimal three = new BigDecimal("3");
BigDecimal third = one.divide(three, 15, BigDecimal.ROUND_HALF_UP);
Przy wykonywaniu obliczeń arytmetycznych o dowolnie wysokiej precyzji naj-
lepiej jest przechowywać licznik i mianownik w osobnych zmiennych. Ponieważ
w podstawowych bibliotekach Javy nie ma obiektów dla ułamków zwykłych o do-
wolnej precyzji, być może pomyślałeś o napisaniu własnej klasy. Wielu ludzi
stworzyło klasy tego typu:
public class HugeFraction {
private BigInteger numerator, denominator;
// metody dla operacji na ułamkach
public HugeFraction divide(HugeFraction other) {
// policz rezultat
return result;
}
}
W bibliotece JScience istnieje kilka klas służących do przeprowadzania ope-
racji o dowolnie wysokiej precyzji. Pierwsza z nich to LargeInteger, podobna do
BigInteger ze standardowej dystrybucji Javy. LargeInteger jest zoptymalizowana
ze względu na prędkość i wydajność w czasie rzeczywistym i implementuje inter-
fejs Ring (struktura algebraiczna) używany w teorii liczb i obliczeniach macierzo-
wych. Posiada również związany ze sobą format XML. Klasa Rational3 bazuje
na niej w celu umożliwienia reprezentacji ułamków a/b o nieskończonej precyzji,
dla a i b będących liczbami całkowitymi różnymi od zera. Klasa Rational jest nie-
zmienna — wszystkie jej metody zwracają wynik, zamiast zmieniać oryginalny
obiekt. Działa to dokładnie tak, jakbyś mógł się spodziewać:
Rational oneThird = Rational.valueOf("1/3");
Rational nine87654321 = Rational.valueOf("987654321/1");
Rational msixteen = Rational.valueOf("-16/1");
Rational msixteenOver987654321 = msixteen.divide(nine87654321);
Rational aNumber = oneThird.times (msixteenOver987654321);
3
Ang. rational number = liczba wymierna — przyp. tłum.
134 Rozdział 5
20. Tak długo, jak pozostaniesz w dziedzinie obiektów Rational, nie pojawią się
żadne błędy zaokrąglania (przy dodawaniu, odejmowaniu, mnożeniu, dzieleniu,
potęgach o wykładnikach całkowitych). Inną klasą, której na pewno nie chcesz
przegapić, jest Real4. Reprezentuje ona liczbę rzeczywistą dowolnie wysokiej
precyzji, o zagwarantowanej niepewności. JScience API posiada również klasę
Complex5, lecz nie jest ona liczbą dowolnej precyzji, gdyż części rzeczywista
i urojona są przechowywane w zmiennych typu double. W następnej części przyj-
rzymy się funkcjom algebraicznym i wielomianowym.
JScience We wcześniejszych częściach tego rozdziału pokazaliśmy korzyści płynące z moż-
liwości manipulowania funkcjami, tak jakby były one obiektami, przez przeka-
zywanie ich jako parametrów do metod. W podrozdziale spróbujemy spojrzeć
na funkcje z matematycznego punktu widzenia. JScience, Colt, JGA (omawiane
wcześniej) — wszystkie z nich zawierają swoje własne implementacje funktorów
i każda z nich ma swoje zalety. Wersja z JGA jest bardzo dobra w zastosowaniach
ogólnego typu z powodu swojej prostoty i ogólności. Colt zawiera więcej wbu-
dowanych funktorów (patrz klasa Functions), lecz nie zapewnia obliczeń o dowol-
nie wysokiej precyzji. W niniejszym podrozdziale omawiamy JScience, ponie-
waż API to posiada ogólny zrąb dla operacji algebraicznych i wielomianowych
możliwy do zastosowania z dowolnymi obiektami implementującymi interfejs
Ring (takimi jak Real bądź Rational lub Twoimi własnymi klasami będącymi im-
plementacją pierścieni).
Obiekt typu Ring posiada metody mnożące i dodające oraz operację odwrot-
ną dla każdej z tych metod. Klasa Polynomial (Wielomian) oznacza „wyrażenie
matematyczne zawierające sumę potęg jednej lub wielu zmiennych przemnożo-
nych przez współczynniki” (cytat z dokumentacji JScience). Możesz utworzyć
wielomiany, które współpracują z dowolną klasą typu Ring. Na nasze potrzeby
zdefiniujemy wielomian zmiennych rzeczywistych (Rational). Zacznijmy od stałego
wielomianu. Klasa org.jscience.mathematics.functions.Constant jest podklasą
Polynomial reprezentującą wielomian stopnia zerowego. Stwórzmy jeden egzem-
plarz za pomocą metody valueOf:
Constant<Rational> sixty = Constant.valueOf(Rational.valueOf("60/1"));
Zastosujmy teraz tą metodę do utworzenia wielomianu (7/15) x5 + 9xy + 60.
Musimy na początku utworzyć każdy z elementów i przemnożyć przez odpowied-
ni współczynnik. Następnie możemy dodać elementy do siebie, aby utworzyć
wielomian. Poniższy kod tworzy wielomian, przypisuje wartości x oraz y i na ko-
niec wyświetla wynik:
4
Ang. real number = liczba rzeczywista — przyp. tłum.
5
Ang. complex number = liczba zespolona — przyp. tłum.
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 135
21. Variable.Local<Rational> x = new Variable.Local<Rational>("x");
Variable.Local<Rational> y = new Variable.Local<Rational>("y");
Polynomial<Rational> xpoly = Polynomial.valueOf(Rational.ONE, x);
Polynomial<Rational> ypoly = Polynomial.valueOf(Rational.ONE, y);
Rational nine = Rational.valueOf("9/1");
Rational sixty = Rational.valueOf("60/1");
Rational seven15ths = Rational.valueOf("7/15");
Polynomial seven15X5 = Polynomial.valueOf(seven15ths, Term.valueOf(x, 5));
Polynomial nineXY = (Polynomial)
Constant.valueOf(nine).times(xpoly).times(ypoly);
Polynomial poly = (Polynomial)
seven15X5.plus(nineXY).plus(Constant.valueOf(sixty));
x.set(Rational.valueOf("5/7"));
y.set(Rational.ONE);
System.out.println(poly);
System.out.println(poly.evaluate());
Wynikiem działania tego kodu dla x = 5/7, y = 1 jest rezultat:
[7/15]x^5 + [9/1]xy + [60/1]
479110/7203
Możesz również różniczkować i całkować wielomiany. JScience ma wiele innych
pożytecznych cech. Opis szczegółów znajdziesz w dokumentacji do API.
COLT Na początku dwudziestego wieku filozof Ludwig Wittgenstein napisał „Traktat
logiczno-filozoficzny”, w którym określił koncepcję funkcji prawdy będącej
JGA abstrakcją wyższego stopnia w logice zdaniowej. Jego funkcje prawdy działają tak
jak znane nam tablice prawdy, lecz łączą one inne zdania zawierające inne funkcje
i dają w wyniku jedynie pojedynczą wartość typu logicznego. W naszej tablicy
prawdy z podrozdziału „Tworzenie tablic prawdy za pomocą BitMatrix” mieliśmy
pewną liczbę wejść i wyjść, przy czym nie łączyliśmy ich z innymi funkcjami.
Jeśli budowałbyś symulator logiczny, musiałbyś zapewne połączyć wiele jego
części w jeden spójny system. Aby móc tworzyć i łączyć bloki logiczne ze sobą,
musimy napisać kod do tego służący.
Możemy połączyć dowolne komponenty na rysunku w jeden schemat, łącząc
je liniami, tak jak łączy się elementy elektroniczne na schematach. Nie chodzi
tu jednak tylko o połączenie elementów bezpośrednio ze sobą, lecz o dokładne
przyporządkowanie wyjść z jednego komponentu do wejść innych komponentów.
Innymi słowy, na rysunku 5.1 nie łączymy ze sobą elementów, lecz ich porty.
136 Rozdział 5
22. Rysunek 5.1. Standardowy element funkcyjny
Możesz wyobrazić sobie porty jako nóżki chipów elektronicznych. Łączenie por-
tów pozwala na dokładne określenie, które wyjście jest połączone z którym wej-
ściem. Spróbujmy użyć tego podejścia do utworzenia klasy Component, której
będzie można użyć w większym systemie.
Nasza klasa Component jest uogólnieniem „funkcji z portami”, która to może
być zaaplikowana do dowolnej funkcji posiadającej zbiór wejść i wyjść. Użyjemy
tego podejścia do napisania rozszerzenia dla metod store i retrieve z tabeli
prawdy utworzonej przez nas wcześniej. Dodamy porty wejścia-wyjścia i kilka
metod dostępu do klasy. Ponieważ port wejściowy może być podłączony jedynie
do portu wyjściowego, utwórzmy na początek osobny interfejs dla każdego typu
(oraz klasę implementującą obydwa z nich):
public interface Port {
public Component getParent();
}
public interface InputPort extends Port {
public void setValue(Object value);
}
public interface OutputPort extends Port {
public Object getValue();
}
public class PortImpl implements InputPort, OutputPort {
private Component parent;
private Object value;
public PortImpl(Component parent) {
this.parent = parent;
}
public Component getParent() { return parent; }
public Object getValue() { return value; }
public void setValue(Object value) { this.value = value; }
}
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 137
23. InputPort oraz OutputPort to interfejsy używane zewnętrznie w stosunku do
komponentu. Wysyłanie danych do portu wejściowego wymaga wywołania meto-
dy ustawiającej zmienną value, a czytanie z portu wyjściowego oznacza wywo-
łanie metody odczytującej wartość zmiennej value. Komponent określa rozmiar
wejścia i wyjścia oraz definiuje metodę Object[]-> Object[], która oblicza wartość
wyjścia dla zadanych wartości na wejściu. Komponent jest zaimplementowany
jako interfejs w celu zwiększenia zakresu możliwych zastosowań:
public interface Component {
// zwraca ilość portów wejściowych
public int getInputSize();
// zwraca ilość portów wyjściowych
public int getOutputSize();
// zwraca port wejściowy o danym numerze identyfikacyjnym
public InputPort getInputPort(int index);
// zwraca port wejściowy o danym numerze identyfikacyjnym
public OutputPort getOutputPort(int index);
// zasadnicza metoda komponentu wykonująca funkcję outputs = f(intputs)
public void process();
}
W tej chwili mamy już ogólny szkielet dla łączenia komponentów posiadają-
cych porty wejścia-wyjścia. Założyłem tutaj, że komponent posiada jedną funkcję
wykonującą całą pracę, pobierającą Object[] jako parametr i zwracającą rów-
nież Object[]. Jeśli chcesz, możesz uczynić tę funkcję na tyle elastyczną, że bę-
dzie ona potrafiła zwracać pojedynczy obiekt na pierwszy port wyjściowy i null
na pozostałe. Na stronie internetowej książki znajdziesz implementację klasy
Component wzbogaconą o możliwość użycia typów generycznych Javy 5 (ang. gene-
rics). Zewnętrzny proces kontroluje komponenty i zarządza połączeniami między
nimi — zaimplementujemy go później, korzystając z API grafów. Jednakże
wcześniej musimy zmienić nasz obiekt w jednostkę przetwarzającą bity korzy-
stającą z tablicy prawdy.
Możemy napisać jednoargumentowy funktor (podtyp UnaryFunctor), który
przetwarza tablicę obiektów na bity, stosując pewne proste reguły konwersji.
Funkcja powinna być na tyle elastyczna, żeby interpretować każdy obiekt w tabli-
cy jako bit w ten sam sposób (Boolean, niezero, nie-null). Załóżmy, że metoda
arrayToBits konwertuje tablicę na bity. Przekonwertowane bity są interpreto-
wane zgodnie z tablicą prawdy i dają bity wyjściowe. Te z kolei są zwracane jako
tablica Boolean[], tak aby komponent mógł przesłać rezultat na swoje porty wyj-
ściowe. Załóżmy, że metoda bitsToArray potrafi tego dokonać. Poniższy przykład
jest uproszczoną wersją faktycznej funkcji, która mogłaby być użyta z naszą klasą
Component:
138 Rozdział 5
24. public class UnaryTruthTableFunction extends
UnaryFunctor<Boolean[],Boolean[]> {
public Boolean[] fn(Boolean[] in) {
// zmień obiekty na bity (w jakiś sposób)
int convertedInput = arrayToBits(in);
// znajdź wyjście w tabeli prawdy
// (opis w podrozdziale "Tworzenie tablic prawdy za pomocą BitMatrix")
long result = retrieve(convertedInput);
//zmień wyjściowe bity na Boolean[] (w jakiś sposób)
return bitsToArray(result);
}
}
Dokładniejsze rozwiązanie jest dostępne na stronie internetowej książki.
W bieżącej implementacji rezultaty muszą być obliczane w sposób „do przodu”
(tzn. tylko w kierunku od wejść do wyjść). Jeśli komponenty są powiązane ze sobą
cyklicznie, potrzebny będzie jakiś rodzaj synchronizacji. W kolejnym podrozdziale
wprowadzimy API grafów i użyjemy go do połączenia portów między komponen-
tami oraz uruchomienia symulacji.
JGraphT W rozdziale 4. odkrywaliśmy „Sieć semantyczną”. Standard RDF który omawiali-
,
śmy, modeluje te sieci jako etykietowane grafy skierowane. Grafy oznaczają tu
JAVA 5+ sieć węzłów lub wierzchołków. W teorii grafów etykietowany graf skierowany
oznacza, że każda krawędź między dwoma wierzchołkami posiada opis i kierunek.
Grafy Jena i RDF użyte przez nas wcześniej są implementacją grafów oznaczo-
nych do specyficznych zastosowań, inne aplikacje mogą jednak potrzebować
innych typów grafów do modelowania oraz wykonywania operacji na nich. W tym
celu możesz wykorzystać JGraphT, łatwą w użyciu bibliotekę do pracy z grafami
różnego rodzaju. Koncentruje się ona na samym modelu grafu, jego połączeń
oraz wykonywaniu operacji na nim — a nie na wizualizacji i wyświetlaniu go.
W rozdziale 6. omówimy inne API, którego głównym celem jest wizualizacja
grafów. Póki co jednak będziemy budować po prostu modele grafów.
Węzły w JGraphT mogą być dowolnymi obiektami Javy. Model grafu opisuje,
w jaki sposób obiekty połączone są ze sobą. Używając tego modelu, możesz zaj-
mować się połączeniami między obiektami, niezależnie od samych obiektów. Jest
to bardzo podobne do założeń modelu Model-View-Controller (MVC, model-
-widok-kontroler) użytego w Swingu oraz frameworkach sieciowych. Teoria gra-
fów jest użyteczna w symulacji i analizie wielu skomplikowanych systemów, takich
jak sieci komputerowe, obwody cyfrowe, ruch na autostradzie czy przesył danych.
Tworzenie grafu w JGraphT jest proste. Na początku tworzysz instancję wy-
maganego typu grafu. Następnie wywołujesz metodę addVertex, aby dodać nowy
obiekt Javy jako wierzchołek. Kiedy obiekt jest już częścią grafu, możesz wywołać
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 139
25. metody służące połączeniu go z innymi wierzchołkami. Poniżej mamy przykład
modelu połączeń niektórych organów i systemów w ciele ludzkim. Rysunek 5.2
pokazuje zależności miedzy elementami grafu.
Rysunek 5.2. Organy i systemy w ciele ludzkim
Użyjemy konstrukcji enum z Javy 5 (zobacz rozdział 1.) do reprezentacji orga-
nów i układów zawartych w grafie. Aby przechowywać zależności między tymi
częściami, możemy stworzyć graf nieskierowany:
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.graph.SimpleGraph;
enum Organs {HEART, LUNG, LIVER, STOMACH, BRAIN, SPINAL_CORD};
enum Systems {CIRCULATORY, DIGESTIVE, NERVOUS, RESPIRATORY};
SimpleGraph<Enum, DefaultEdge> graph =
new SimpleGraph<Enum, DefaultEdge>(DefaultEdge.class);
graph.addVertex(Organs.HEART); // serce
graph.addVertex(Organs.LUNG); // płuco
graph.addVertex(Organs.BRAIN); // mózg
graph.addVertex(Organs.STOMACH); // żołądek
graph.addVertex(Organs.LIVER); // wątroba
graph.addVertex(Organs.SPINAL_CORD); // rdzeń kręgowy
graph.addVertex(Systems.CIRCULATORY); // układ krążenia
graph.addVertex(Systems.NERVOUS); // układ nerwowy
graph.addVertex(Systems.DIGESTIVE); // układ pokarmowy
graph.addVertex(Systems.RESPIRATORY); // układ oddechowy
140 Rozdział 5
26. graph.addEdge(Organs.HEART, Systems.CIRCULATORY);
graph.addEdge(Organs.LUNG, Systems.RESPIRATORY);
graph.addEdge(Organs.BRAIN, Systems.NERVOUS);
graph.addEdge(Organs.SPINAL_CORD, Systems.NERVOUS);
graph.addEdge(Organs.STOMACH, Systems.DIGESTIVE);
graph.addEdge(Organs.LIVER, Systems.DIGESTIVE);
Zwróć uwagę, że każdy z wierzchołków musi być dodany do grafu, zanim
dołączysz go do krawędzi, w przeciwnym razie otrzymasz wyjątek. Ten kod nie
wyświetla niczego, tworzy jedynie wewnętrzną sieć połączeń. Dokładniej tworzy
on listę sąsiadów dla każdego obiektu. W tym szczególnym przypadku wszystkie
krawędzie są traktowane jednakowo. Aby krawędzie stały się rozróżnialne, możesz
użyć krawędzi etykietowanych.
Wywołując odpowiednie metody na grafie, możesz znaleźć sąsiadów danych
obiektów. Znajdźmy więc krawędzie dla jakiegoś wierzchołka z naszego przy-
kładu i wyświetlmy, co jest po drugiej stronie danej krawędzi. Węzły połączone
bezpośrednio z węzłem DIGESTIVE możemy znaleźć za pomocą metody:
import org.jgrapht.Graphs;
import org.jgrapht.graph.DefaultEdge;
Set<DefaultEdge> digestiveLinks = graph.edgesOf(Systems.DIGESTIVE);
for (DefaultEdge anEdge : digestiveLinks) {
Enum opposite = Graphs.getOppositeVertex(graph, anEdge,
Systems.DIGESTIVE);
System.out.println(opposite);
}
Technika, której tutaj użyliśmy, polega na uzyskaniu listy krawędzi, następnie
dla każdej z nich trzeba znaleźć wierzchołek, który nie jest węzłem DIGESTIVE
(czyli znaleźć przeciwny wierzchołek). DefaultEdge (krawędź) to bazowa klasa,
po której dziedziczą wszystkie krawędzie i która łączy wierzchołek źródłowy
z docelowym. Możesz użyć jednej ze standardowych implementacji dostępnych
wraz z biblioteką JGraphT lub napisać własną podklasę, aby spełniała specyficzne
zadania.
JGraphT posiada implementacje innych operacji, które można wykonywać na
grafach. Więcej informacji znajdziesz w dokumentacji do API. Będziemy korzy-
stać jeszcze z JGraphT w następnej części rozdziału. W rozdziale 6. użyjemy innego
API do wizualizacji grafów.
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 141
27. JGraphT W części poświęconej łączeniu węzłów stworzyliśmy „ogólną jednostkę oblicze-
niową” z portami wejścia i wyjścia, a w części poświęconej grafom poznaliśmy
JAVA 5+ sposób na łączenie dowolnych obiektów Javy w strukturę grafów. W tej części
połączymy wejścia i wyjścia komponentów, używając JGraphT. Tym sposobem
będziemy mogli utrzymywać połączenia portów niezależnie od implementacji
komponentów. W rzeczywistości nie dbamy tutaj w ogóle o to, co komponenty
robią, lub nawet czy przetwarzają one wartości logiczne. Każdy komponent ma
metodę process, która pobiera dane z portów wejściowych, przetwarza je i zwraca
rezultaty na porty wyjściowe. Możemy wywołać metodę process dla każdego
z komponentów i wysłać wynik na porty wyjściowe. Jeśli użyliśmy grafu skie-
rowanego, możemy przesłać dane z wyjść na wejścia kolejnych stopni poprzez
iterację po wszystkich krawędziach. Dla każdej krawędzi wywołujemy metodę
getValue na wierzchołku źródłowym (OutputPort) i ustawiamy wartość wyjściową
na wierzchołku docelowym (InputPort) za pomocą metody setValue. Możemy
teraz napisać klasę, która zarządza wierzchołkami używając API grafów.
public class MetaComponentSimple {
private ListenableDirectedGraph<Object, DefaultEdge> graph;
public MetaComponentSimple() {
graph = new ListenableDirectedGraph(DefaultEdge.class);
}
public void connect(OutputPort out, InputPort in) {
Component source = out.getParent();
Component target = in.getParent();
//dodaj nadrzędne komponenty do grafu
if (!graph.containsVertex(source)) {
graph.addVertex(source);
}
if (!graph.containsVertex(target)) {
graph.addVertex(target);
}
// dodaj porty do grafu
if (!graph.containsVertex(in)) {
graph.addVertex(in);
}
if (!graph.containsVertex(out)) {
graph.addVertex(out);
}
// dodaj krawędź od komponentu-źródła do portu wyjściowego
graph.addEdge(source, out);
// dodaj krawędź od portu wyjściowego do wejściowego
graph.addEdge(out, in);
// dodaj krawędź od portu wejściowego do komponentu-celu
graph.addEdge(in, target);
}
142 Rozdział 5
28. public void process() {
processSubComponents();
propagateSignals();
}
private void propagateSignals() {
for (DefaultEdge edge : graph.edgeSet()) {
Object source = graph.getEdgeSource(edge);
Object target = graph.getEdgeTarget(edge);
if (source instanceof OutputPort) {
OutputPort out = (OutputPort) source;
InputPort in = (InputPort) target;
in.setValue(out.getValue());
}
}
}
private void processSubComponents() {
for (Object item : graph.vertexSet()) {
if (item instanceof Component) {
((Component) item).process();
}
}
}
}
Aby użyć tej klasy, musisz najpierw ustanowić połączenia pomiędzy portami,
wywołując metodę connect.
Ta metoda dodaje nadrzędny komponent każdego portu do grafu, tak aby póź-
niej dany komponent mógł wywołać metodę process swoich subkomponentów.
Klasa zarządzająca ma własną metodę process, która najpierw wywołuje analo-
giczne metody wszystkich komponentów, a następnie przekazuje wyniki ich
działań na wejścia kolejnego stopnia. Wybór tej samej nazwy dla tej metody nie
jest przypadkiem. Jeśli chciałbyś zaimplementować inne metody interfejsu Compo-
nent, mógłbyś użyć tej klasy do zbudowania komponentu złożonego z innych
komponentów. Na stronie internetowej książki znajdziesz bardziej kompletny przy-
kład. Poniżej mamy kod, który korzysta z naszej nowej klasy do implementacji
funkcji y=AND(OR(a,b),OR(c,d)).
MetaComponentSimple manager = new MetaComponentSimple();
// Załóżmy, że stworzyliśmy komponent – bramkę typu AND,
// używając technik opisanych wcześniej. Posiada ona dwa wejścia.
Component and = createAndGateComponent(2);
OutputPort y = and.getOutputPort(0);
// użyjemy pary bramek OR, każda z nich jest dwuwejściowa
Component or1 = createOrGateComponent(2);
InputPort a = or1.getInputPort(0);
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 143
29. InputPort b = or1.getInputPort(1);
Component or2 = createOrGateComponent(2);
InputPort c = or2.getInputPort(0);
InputPort d = or2.getInputPort(1);
manager.connect(or1.getOutputPort(0), and.getInputPort(0));
manager.connect(or2.getOutputPort(0), and.getInputPort(1));
// ustaw wartości wejściowe
a.setValue(true);
b.setValue(false);
c.setValue(false);
d.setValue(false);
manager.process();
// potrzebujemy drugiego wywołania, gdyż mamy komponent dwustopniowy
manager.process();
System.out.println(y); // wynik: false
Zauważ, że przetwarzanie sygnału może zajmować więcej niż jeden cykl,
zanim osiągnie on porty wyjściowe. Tak też jest dla rzeczywistych obwodów, po-
nieważ każdy komponent wprowadza opóźnienie, choć jest ono tak krótkie, że
go nie zauważamy. Dyskusję zależności czasowych zostawiamy do rozdziału 7.
W następnej części będziemy zajmować się innymi sieciami, przypominającymi
sieć nerwów w mózgu, zwanymi sieciami neuronowymi.
JOONE Czy zastanawiałeś się kiedyś, jak można zbudować mózg? Cóż, w Javie jest to
proste i wcale nie musisz się czuć doktorem Frankensteinem. W terminologii
informatycznej sieci neuronowe to grupa prostych komórek obliczeniowych ściśle
powiązanych ze sobą i tworzących jako całość system do przetwarzania danych.
Niektórzy używają terminu sieci neuronowe na określenie dowolnych systemów
konekcjonistycznych. Tutaj jednak będziemy się zajmować systemami o archi-
tekturze zbliżonej do tej, którą posiada ludzki mózg. Systemy takie są używa-
ne w wielu zadaniach takich jak rozpoznawanie mowy i obrazów oraz uczenie
się maszyn.
W sieci neuronowej pojedynczy węzeł nazywa się neuronem. Neuron taki
odbiera dane wejściowe od sąsiadów, przy czym każdemu połączeniu z sąsiadem
(krawędzi) przypisana jest pewna waga. Połączenia takie w sieciach neuronowych
nazwane są synapsami. Waga jest uwzględniana przy pobieraniu danych z synap-
sy, następnie dane te są przesyłane do kolejnych neuronów docelowych. Sieci
neuronowe są użyteczne, gdyż mogą być uczone rozpoznawania pewnych zależ-
ności (wzorców) pośród danych. Sieć neuronową można „nauczyć” tego, co ma
ona robić.
Joone jest łatwym w użyciu API dla pracy z sieciami neuronowymi w Javie.
Posiada edytor graficzny dla tworzenia i uczenia sieci neuronowych. Choć jest
również możliwe stworzenie i nauka sieci w sposób programowy, użycie edytora
144 Rozdział 5
30. jest rozwiązaniem prostszym. Gdy już stworzysz w edytorze swoją sieć i zakoń-
czysz proces nauki, możesz zagnieździć tę sieć i silnik Joone w swojej aplika-
cji. Rysunek 5.3 pokazuje edytor graficzny w użyciu oraz jedną z przykładowych
sieci Joone.
Rysunek 5.3. Edytor graficzny Joone
Z pomocą edytora możesz tworzyć, uczyć i uruchamiać sieci neuronowe.
Eksportując nauczoną sieć do pliku (używając menu File > Export NeuralNet),
możesz wykorzystać ją później we własnym programie. Edytor Joone tworzy seria-
lizowane pliki zawierające sieci, które to pliki możesz następnie wczytać i urucho-
mić za pomocą silnika Joone, używając poniższego kodu.
import org.joone.net.NeuralNetLoader;
import org.joone.net.NeuralNet;
import org.joone.engine.Monitor;
import org.jonne.io.FileOutputSynapse;
NeuralNetLoader netLoader = new NeuralNetLoader("/projects/nn/
mynetwork.snet");
NeuralNet myNet = netLoader.getNeuralNet();
// pobierz warstwę wyjściową sieci
Layer output = myNet.getOutputLayer();
//dodaj wyjściową synapsę (połączenie) do warstwy wyjściowej
FileOutputSynapse myOutput = new FileOutputSynapse();
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 145
31. // ustaw plik wyjściowy na mynetwork.out
myOutput.setFileName("/project/nn/mynetwork/out");
output.addOutputSynapse(myOutput);
Monitor monitor = myNet.getMonitor();
// wykonamy jeden cykl
monitor.setTotCicles(1);
// ustaw flagę fazy uczenia na 0
monitor.setLearning(false);
// uruchom warstwy sieci
myNet.start();
// uruchom monitor
monitor.Go();
Powyższy przykład ładuje serializowaną sieć do instancji klasy NeuralNet,
używając klasy pomocniczej NeuralNetLoader. Następnie tworzymy synapsę File-
OutputSynapse, która będzie przechwytywać dane wyjściowe generowane przez
sieć. Dane wejściowe i wyjściowe są tablicami double[]. Klasa Monitor zarządza
siecią oraz pozwala na uruchamianie i zatrzymanie oraz ustawianie parametrów
kontrolujących jej zachowanie. Nie uwzględniłem tutaj kodu obsługi wyjątków,
aby pozostawić listing krótkim i prostym oraz aby skupić się na samym działaniu
sieci. Jeśli wszystko, co chcesz zrobić, to uruchomienie sieci neuronowej i zapisa-
nie wyników do pliku, nie musisz pisać takiej aplikacji. Istnieje klasa NeuralNet-
Runner obsługiwana z wiersza poleceń, możesz też uruchomić sieć z edytora Joone.
Odnośniki do dokładniejszej dokumentacji Joone znajdziesz na stronie inter-
netowej książki. Dokumentacja ta posiada wiele przykładów, z którymi możesz
poeksperymentować: rozpoznawanie obrazów, analizę szeregów czasowych, pro-
gnozowanie kursów walut oraz wiele innych. Ponieważ sieci mogą być seriali-
zowane, istnieje również framework dla tworzenia rozproszonych sieci neuro-
nowych. Jest on wystarczający do stworzenia „globalnych mózgów” — to mogłoby
zapewne uszczęśliwić doktora Frankensteina! Sieci neuronowe są potężną tech-
niką, którą można zastosować w wielu zadaniach związanych z rozpoznawaniem
wzorców, a Joone sprawia że tworzenie takich sieci i zagnieżdżanie we własnych
aplikacjach jest bardzo łatwe.
JGAP Istnieją problemy, dla których niełatwo jest znaleźć właściwy algorytm do ich
rozwiązania. Jest to szczególnie problematyczne w wypadku procesów, które wy-
COLT magają częstych zmian algorytmu w celu uwzględnienia zmiennych warunków
środowiska programu. W takich przypadkach możesz spróbować napisać pro-
gram, który samodzielnie wypracowuje rozwiązanie. Jest to tak zwany algorytm
genetyczny (ang. Genetic Algorithm, GA). Ten typ programowania polega na
wypróbowaniu wielu rozwiązań i wybraniu najlepszego. W każdym cyklu prób
„najlepiej przystosowane” elementy ze zbioru rozwiązań (według wybranej funkcji
oceny — ang. fitness function) są wybrane do „rozmnożenia” i tworzą następne
146 Rozdział 5
32. pokolenie. Następnie nowe pokolenie rozwiązań jest poddawane mutacjom i krzy-
żowane z innymi, co prowadzi do powstania wielu nowych wersji różniących się
od poprzednich. Proces powtarza się dla kolejnych generacji.
Czasami proces ten prowadzi do powstania precyzyjnie wykalibrowanego al-
gorytmu już po kilku iteracjach. Być może nawet trudno będzie zrozumieć, jak
dokładnie działa wybrany algorytm — i może się on różnić zdecydowanie od roz-
wiązania, które wybralibyśmy, pisząc je „ręcznie”, ponieważ funkcja oceny wybie-
ra w tym wypadku algorytmy najskuteczniejsze, takie też będą algorytmy wytwo-
rzone przez ten proces.
Istnieje wiele bibliotek dla algorytmów genetycznych stworzonych w Javie.
Wiele odnośników znajdziesz na stronie internetowej książki. W tej części pu-
blikacji przyjrzymy się jednej z nich — JGAP (ang. Java Genetic Algorithms
Package — pakiet algorytmów genetycznych dla Javy). Zacznijmy od kilku pod-
stawowych pojęć używanych w dziedzinie algorytmów genetycznych. Terminy te
są zapożyczone z genetyki, mimo że obiekty używane w tych algorytmach mają
raczej niewiele wspólnego z DNA. Chromosom (lub genom) przedstawia zbiór
możliwych podejść do rozwiązania problemu, a gen przestawia jednostkę w chro-
mosomie (allele są konkretnymi odmianami genu, podobnie jak z zależnością
klasa-instancja). Gen może być łańcuchem tekstowym, liczbą, drzewem, progra-
mem lub dowolną inną strukturą. Aby używać JGAP musisz na początku wybrać
,
genom, który odpowiednio reprezentuje przestrzeń twojego problemu. Następnie
wybierasz funkcję oceny dla testowania indywidualnych osobników populacji.
Na koniec tworzysz obiekt konfiguracji, aby opisać charakterystykę procesu, i mo-
żesz już rozpocząć proces rozmnażania osobników.
Użyjemy kodu z naszego przykładu tablicy prawdy z części „Bity dużego
kalibru”, gdzie stworzyliśmy demultiplekser 1-do-4. Stworzyliśmy wtedy tablicę
prawdy dla demultipleksera z dwoma wejściami adresowymi, pojedynczym wej-
ściem danych i czterema wyjściami danych. Wymaga to dokładnie 32 bitów
w tablicy prawdy. Możesz potraktować to jako testowanie pojedynczego genu
o stałej długości równej 32 bity w naszej symulacji genetycznej. Jak się okazuje,
nie działa to najlepiej w naszej aplikacji, ponieważ przestrzeń poszukiwania jest
równa całemu zakresowi wartości typu int. Możemy zaprojektować to lepiej,
używając genu czterobitowego reprezentującego bity wyjściowe i chromosomu
o długości 8. Ponieważ cztery bity wyjściowe działają jako całość, okazuje się to
być dużo lepszym wyborem dla genu. W wielu testach przeprowadzonych przy
100 000 pokoleń i populacji równej 200 gen 32-bitowy nie wytworzył pojedyncze-
go dopasowania. Jednakże z 4-bitowym genem zwycięzca pojawiał się szybciej
niż w dwudziestym pokoleniu.
Biblioteka JGAP posiada implementację interfejsu Gene (gen) nazwaną Integer-
Gene. Jest ona łatwa do konwersji na typ Integer, więc będzie się ona dobrze
integrować z naszą tablicą prawdy. Funkcja oceny w JGAP posiada metodę evaluate
z parametrem typu IChromosome, która zwraca wartość double. Wyższa war-
tość oznacza, że dany osobnik wykonuje zadanie lepiej. Tak wygląda nasza funk-
cja oceny:
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 147
33. public class DemuxFitness extends org.jgap.FitnessFunction {
private TruthTable tt;
public DemuxFitness() {
// to jest nasz cel, do którego chcemy wyewoluować
tt = new TruthTable(3,4);
tt.store(4, 1); // 100 -> 0001
tt.store(5, 2); // 101 -> 0010
tt.store(6, 4); // 110 -> 0100
tt.store(7, 8); // 111 -> 1000
}
public int correctBits(int data) {
BitVector vecValue = new BitVector(new long[] {data}, 32);
BitVector target = tt.getTruthMatrix().toBitVector();
// możemy znaleźć liczbę właściwych bitów za pomocą:
// count(not(xor(target, vecValue)))
vecValue.xor(target);
vecValue.not();
return vecValue.cardinality();
}
public double evaluate(IChromosome chrom) {
int valueTotal = 0;
for (int i = 7; i>=0; i--) {
IntegerGene gene = (IntegerGene) chrom.getGene(i);
Integer value = (Integer) gene.getAllele();
valueTotal += value;
valueTotal <<= 4;
}
int correct = correctBits(valueTotal);
// zwracamy kwadrat wartości, aby bardziej nagrodzić dokładne odpowiedzi
return correct * correct;
}
}
Moglibyśmy zwrócić po prostu liczbę poprawnych bitów w pojedynczym
chromosomie. Jest to słuszne, dopóki ocena nie zacznie być niemal zawsze bliska
najwyższej, kiedy to zaczyna brakować „zachęty” dla nowych osobników do bycia
lepszymi. Zwracanie kwadratu liczby prawidłowych bitów bardziej „wynagradza”
osobniki, które uczyniły małą poprawę w ocenie. Stwórzmy teraz obiekt konfi-
guracji i będziemy mogli uruchomić nasz algorytm genetyczny.
Configuration config = new DefaultConfiguration();
// osiem genów
Gene[] genes = new Gene[8];
for (int i = 0; i < 8; i++) {
// liczba całkowita 4-bitowa (0-15)
genes[i] = new IntegerGene(config, 0, 15);
}
148 Rozdział 5
34. Chromosome sample = new Chromosome(config, genes);
config.setSampleChromosome(sample);
DemuxFitness fitTest = new DemuxFitness();
config.setFitnessFunction(fitTest);
config.setPopulationSize(200);
Genotype population = Genotype.randomInitialGenotype(config);
for (int i=0; i<1000; i++) {
population.evolve();
}
IChromosome fittest = population.getFittestChromosome();
Kod ten tworzy chromosom o ośmiu genach, z których każdy może mieć war-
tości od 0 do 15. Następnie wstawia ten chromosom do obiektu konfiguracji.
Dalej ustawia funkcję oceny i rozmiar populacji, tworzy początkową przypad-
kową populację i uruchamia symulację, a na koniec wybiera najlepiej dopasowany
chromosom. W tym przypadku znamy z góry wynik, ale jeśli potrzebowałbyś
wartości zwycięskich alleli, mógłbyś wydobyć je z chromosomu. Jeśli chcesz użyć
czegoś innego niż String, Integer czy bit w tworzonych przez siebie genach,
możesz stworzyć własną implementację Gene.
Algorytmy genetyczne są, jak widać, kolejnym potężnym narzędziem dla pro-
gramistów Javy, szczególnie do rozwiązywania problemów, w których rozwiąza-
nia da się testować i w środowiskach dynamicznych, gdzie może nie istnieć jedno
niezmiennie najlepsze rozwiązanie. Rozwiązanie, które tworzy na drodze ewolu-
cji sieć neuronową — za pomocą API Joone oraz JGAP — znajdziesz na stronie
internetowej książki.
JADE Inteligentny agent (ang. intelligent agent) jest to samodzielny program (proces)
zdolny do podejmowania decyzji i akcji bez pomocy człowieka. Programiści
często używają tego określenia dla procesów działających w większym środowi-
sku tworzonym na potrzeby takich agentów (ang. agent framework). Inteligentny
agent jest najbardziej użyteczny, gdy jest częścią systemu wieloagentowego.
W systemach tego typu możesz rozdzielić problem na wiele prostszych części
i przypisać agentów do każdej z tych części. Agenty czasami mogą się przenosić
między komputerami w ramach swojego środowiska oraz komunikować się mię-
dzy sobą. Inne typy agentów pozostają zawsze na jednym komputerze. Gdy
usługi sieciowe (ang. web services) staną się bardziej powszechne i będą dostar-
czać większą różnorodność danych, prawdopodobnie staną się głównym źródłem
danych i kanałem komunikacyjnym. W wielu systemach agenty działają same
z siebie jako małe usługi sieciowe.
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 149
35. Dzięki maszynie wirtualnej zdolnej do pracy na wielu platformach oraz po-
tężnemu modelowi bezpieczeństwa Java jest idealnym rozwiązaniem do tworze-
nia agentów. Wyobraź sobie na przykład wiele niegraficznych apletów pracują-
cych w rozproszeniu nad rozwiązanie problemu. Istnieje wiele API dla Javy do
tworzenia agentów, istnieje nawet konsorcjum nazywające się „Fundacja na rzecz
inteligentnych agentów fizycznych” (ang. Foundation for Intelligent Physical Agents
— FIPA), które stworzyło zbiór standardów do tworzenia frameworków agen-
towych. My użyjemy API nazwanego Jade, które jest jedną z najpopularniejszych
bibliotek zgodnych ze standardami FIPA. Istnieje kilka zupełnie niepowiązanych
projektów dla Javy nazywających się Jade, więc upewnij się przy pobieraniu
z internetu, że wybrałeś ten właściwy. (Możesz też skorzystać z odnośników
na stronie internetowej książki.)
W podrozdziale wprowadzimy bibliotekę Jade przez przykład związany z gieł-
dą papierów wartościowych. Inteligentne agenty sprawdziłyby się świetnie do
tzw. program trading, czyli automatycznego kupowania i sprzedawania papie-
rów wartościowych w oparciu o zdarzenia, takie jak zmiana cen, podaży, nowe
raporty informacyjne. Szczególnie przydatny byłby tutaj system wieloagentowy.
Spróbujmy zilustrować tę ideę, pisząc prostego agenta, który kupuje 100 akcji,
gdy występuje pewien specyficzny zbiór zdarzeń. Użyjemy pseudokodu do wyko-
nania połączenia z hipotetyczną usługą sieciową, pominiemy też wszelkie zagad-
nienia związane z prywatnością i bezpieczeństwem. (Sięgnij do dokumentacji Jade,
a znajdziesz tam przykłady z bezpiecznymi agentami.) Tak wygląda najprostszy
możliwy agent:
public class WorthlessAgent extends jade.core.Agent {
protected void setup() {
}
}
Jade wywołuje metodę setup, gdy agent jest pierwszy raz ładowany (podob-
ne działanie ma metoda init w apletach i main w aplikacjach konsolowych). W tej
metodzie powinieneś umieścić kod inicjujący agenta oraz określić jego zacho-
wania. Zachowania (ang. behaviours) definiują to, co agent robi w czasie swojego
życia. Możesz wyobrazić to sobie jako coś podobnego do funktorów. W naszym
wypadku moglibyśmy chcieć, aby agent okresowo sprawdzał serwer kursów, aby
otrzymać ostatnie ceny danych akcji. Ten agent, „sprawdzacz wartości”, mógłby
wysyłać wiadomość do agenta „kupca”, gdy cena osiąga zadany poziom. Istnieje
wiele podklas klasy Behaviour, których możemy użyć. Uruchomimy TickerBe-
haviour (zachowanie typu „tykający zegar”) do sprawdzania ostatnich cen akcji.
Ten typ jest zachowaniem periodycznym, powtarzany jest w stałych odstępach
czasu („tyknięciach” zegara). Poniżej mamy kod zachowania sprawdzającego ceny
co 300 sekund:
150 Rozdział 5
36. public class CheckQuoteBehaviour extends TickerBehaviour {
public CheckQuoteBehaviour(Agent a) {
super(a, 300*1000); // okres w milisekundach
}
protected void onTick() {
// pobierz aktualną cenę
if (getCurPrice() < 5.0) {
//wyślij wiadomość zakupu – do zdefiniowania później
}
// zatrzymaj po 1000 "tyknięciach"
if (getTickCount() > 1000) {
stop();
}
}
}
Działanie kończy się po wywołaniu metody stop — po 1000 „tyknięciach” ze-
gara. Teraz podepniemy tę klasę do agenta.
public class QuoteAgent extends jade.core.Agent {
protected void Setup() {
addBehaviour(new CheckQuoteBehaviour(this));
}
}
W ten sposób mamy pełnego agenta. Możemy załadować go do serwera
agentów bądź to z pomocą graficznej nakładki Jade, bądź też pisząc kod, który
wykona to zadanie. Następnie wyślemy wiadomość zakupu akcji do agenta-kupca,
zastępując metodę onTick zdefiniowaną wcześniej. Gdy agent jest załadowany
do systemu, zostaje mu przypisany unikatowy numer identyfikacyjny (AID — ang.
Agent Identifier). AID może być identyfikatorem lokalnym lub globalnym. Za-
łóżmy, że mamy już agenta-kupca nazwanego PurchasingAgent o lokalnym AID
„buyer” (dokumentacja Jade wyjaśnia, jak przypisać AID agentowi). Oto popra-
wiona metoda onTick:
// wewnątrz QuoteAgent...
protected void onTick() {
// pobierz aktualną cenę
if (getCurPrice() < 5.0) {
// wyślij wiadomość do agenta-kupca
jade.core.AID buyingAgent = new jade.core.AID("buyer",
AID.ISLOCALNAME);
// prosimy innego agenta o wykonanie pewnej czynności
ACLMessage msg = new ACLMessage(ACLMessage.REQUEST);
// wyślij wiadomość (typu String)
Zastosowania w naukach ścisłych i matematyczno-przyrodniczych 151