Platforma Java a technologie .Net

Subskrybuj RSS A A A
10 czerwca 2002
Tomasz Kopacz

.Net to środowisko, w którym mogą działać aplikacje pisane w dowolnym języku. W świecie Javy natomiast istnieje jeden uniwersalny język, który został tak rozbudowany, by sprostać każdemu zadaniu. Pozornie środowiska programistyczne skłóconych firm: Microsoftu i Sun Microsystems dzieli wszystko. Gdy jednak bliżej się im przyjrzeć, Java i .Net mają wiele cech wspólnych.

W najnowszym języku Microsoftu można skorzystać z uproszczonej składni odwoływania się do właściwoś-ci, tak jak w Visual Basicu czy Delphi. W Javie trzeba jawnie wywoływać metody Set i Get; w C# można skorzystać ze znacznie krótszej składni "z kropką". Indeksatory w C# odpowiadają niemal zupełnie koncepcji wektorów w Javie. Jednak w połączeniu z właściwościami skracają składnie, zwłaszcza przy poruszaniu się po rozbudowanym drzewie obiektów.

Java jest językiem obiektowym, jednak niektóre typy proste nie są obiektami. W C# wprowadzono mechanizm boxowania, gdzie typ prosty może być obiektem. Jest umieszczany w odpowiednim "pudełku, jeżeli tylko w kodzie nastąpi próba odwołania np. do jakiejś metody. Normalne operacje arytmetyczne są natomiast wykonywane szybko, tak jakby liczba nie była obiektem. Java zaś odziedziczyła pewne niekonsekwencje po C++.

W C# zostały znacznie uproszczone mechanizmy, pozwalające na pisanie aplikacji wielowątkowych. To, co w Javie jest realizowane na poziomie klas (np. Runnable), to w C# jest wspierane dodatkowo atrybutami (także klasy bazowe realizujące wielowątkowość są znacznie prostsze).

Microsoft twierdzi, że jedną z przewag .Net Framework jest możliwość tworzenia aplikacji w wielu różnych językach, z łatwą wymianą parametrów, dziedziczeniem klas, które powstały w innym języku programowania. Nie można jednak zapominać, że jedną z części .Net Framework jest CLS - biblioteka "typów" danych, która pośrednio ogranicza możliwości języka. Ű Ű Innymi słowy to, co określony język udostępnia, musi być wyrażone przy użyciu CLS, a tylko C# jest językiem, który pozwala w pełni skorzystać z możliwości, jakie zapewnia CLS. Na przykład nie jest możliwe w Visual Basic.Net napisanie kodu wykorzystującego wskaźniki.

Sun poinformował, że prawdopodobnie powstanie środowisko IDE Forte, w którym będzie można pisać zarówno aplikacje w C/C++, jak i Javie (obecnie dostępne Studio One jest zintegrowanym IDE dla C++ i Fortrana). W zapowiedziach kolejnej wersji Java Development Kit jest planowane wsparcie dla debuggera (Java Platform Debugger Architecture), w którym bytecody powstają na podstawie kodu źródłowego, napisanego w języku innym niż Java, a który został np. przetłumaczony na Javę.

Z kolei Microsoft opracował pakiet pozwalający na przenoszenie rozwiązań powstałych w Javie do .Net. Zestaw programistyczny JUMP zawiera J# (kompilator Javy) do MSIL, narzędzie, które konwertuje kod źródłowy Javy do C#, a także konwerter plików binarnych, przekształcających bytecody Javy na MSIL.

Awantura o delegaty

Delegaty są wskaźnikami do funkcji. Mogą być wykorzystywane np. do definiowania procedur obsługi zdarzeń czy przechwytywania informacji zgłaszanych z innych modułów programu. Dzięki delegatom w C# wystarczy użyć składni: obiekt.zdarzenie += naz-wa funkcji obsługującej zdarzenie. Chcąc natomiast obsłużyć zdarzenie w Javie, zwykle należy skorzystać z zagnieżdżonej klasy i zdefiniować odpowiednią klasę typu Listener.

Jeżeli przyjąć, że proces między Sun Microsystems a Microsoftem dotyczy kwestii technicznych, to główną kwestią sporną są delegaty. Tak naprawdę, gdyby Sun zgodził się na rozszerzenie Javy o ten mechanizm, prawdopodobnie C# ani .Net w ogóle nigdy by nie powstały. A tak Microsoft opracował ten mechanizm samodzielnie.

Sun wprawdzie pokazał, jak można zrealizować mechanizm delegatów bez wykorzystywania niestandardowych rozszerzeń języka Java, ale przykładowy minimalny kod ma ponad 1264 bajty i zawiera pomocniczą klasę korzystającą z mechanizmów java.lang.reflect, mającą 37 linii. Zaś przy użyciu delegatów jest to tylko jedna linia kodu.

Atrybuty a opis w XML

We współczesnych aplikacjach, obok właściwego kodu źródłowego, znajduje się duża liczba tzw. metadanych, czyli informacji opisujących znaczenie innych danych.

W przypadku Javy większość metadanych znajduje się w plikach XML towarzyszących projektowi. W .Net wprowadzono atrybuty. Atrybut to dodatkowy element składni, który zmienia znaczenie określonych elementów języka. Dobrym przykładem jest atrybut WebMethod, który przekształca funkcję czy procedurę w usługę Web, dodając odpowiednie "opakowanie" realizujące np. translację SOAP. W Javie zwykle jest to plik konfiguracyjny, który określa, że dla danego elementu należy wygenerować wrapper. Skutek działania jest dosyć podobny, jednak atrybut sprawia, że składnia jest bardziej zwięzła i czytelna.

W .Net programista może także definiować własne atrybuty, np. modyfikując zachowanie wrapperów tak, by pakiet SOAP został zaszyfrowany. Nadużywanie atrybutów może być jednak niebezpieczne. Zbyt dużo modyfikatorów może sprawić, że oryginalna składnia nie będzie widoczna (atrybuty można dopisywać na poziomie całego pakietu, klasy czy funkcji ewentualnie poszczególnych instrukcji).

Przenośność

Generalnie rozwiązania oparte na Javie można uruchamiać na każdej platformie, na dowolnym systemie operacyjnym (o ile nie korzysta się z mechanizmów właściwych dla danego serwera aplikacyjnego czy platformy - za pośrednictwem JNI).

Pełna wersja .Net Framework jest oczywiście dostępna tylko na Windows. Warto podkreślić, że Microsoft nie wspiera już Windows 95 i na tej platformie .Net Framework nie będzie działał. Niedawno Microsoft udostępnił kod źródłowy projektu Rotor, który jest implementacją CLI (jednej z podstawowych część .Net) jako shared-source. Dostępny jest kod źródłowy dla systemów FreeBSD i Windows 2000/XP, który realizuje podstawową funkcjonalność .Net (jest tam m.in. kompilator C#, klasy wejścia/wyjścia itp.).

Jednocześnie firma Ximian prowadzi pracę nad projektem Mono - implementacją .Net Framework dostępną jako open source. Niemal w całości działa już kompilator C#. Opracowano także interpreter MSIL. Trwają prace nad biblioteką klas.

W najbliższych numerach przedstawimy kolejne aspekty porównujące technologie .Net i Java. Za tydzień o komponentach i standardowych bibliotekach.

Oceń artykuł

średnio: 0 liczba ocen: 0
« wstecz 1  2  3 

Komentarze (0)

Najnowsze

e-Sąd z odsieczą sprawiedliwości

Polski wymiar sprawiedliwości postrzegany jest jako skostniały i opieszały. Tymczasem kolejne e-usługi udostępniane przez Ministerstwo Sprawiedliwości ułatwiają życie przedsiębiorcom i usprawniają pracę sądów.

e-Zdrowie w Polsce i na świecie

Projekty informatyzacji służby zdrowia realizowane są na świecie z różnym powodzeniem. Skąd Polska mogłaby czerpać wzorce? A może jesteśmy skazani na własne rozwiązania?

Raport Państwo 2.0, czyli nowa wizja informatyzacji państwa

Michał Boni, minister administracji i cyfryzacji, zaprezentował raport "Polska 2.0. Nowy start dla e-administracji". Przedstawia on informacje na temat stanu realizacji projektów będących w gestii nowo utworzonego ministerstwa oraz prezentuje kierunki dalszych działań związanych z informatyzacją i cyfryzacją administracji publicznej w naszym kraju.

Cyberprzestępcy podążają za użytkownikami

Już dwie na trzy polskie firmy odnotowały ataki lub awarie, które spowodowały spadek produkcji. Co trzecia firma utraciła dane. Liczba takich przypadków będzie rosła, bo hakerzy biorą na cel najbardziej masowe technologie. Szybko reagują też na zmiany w firmowej architekturze.

Jak zaplanować karierę w branży IT

Doświadczenia łączone na różnych stanowiskach w firmach o odmiennych profilach są szczególnie cenione przez pracodawców. Dlatego warto głęboko przeanalizować możliwości rozwoju kariery, które obecnie stwarza rynek IT.

Jakie są różnice między chmurą a wirtualizacją

Wirtualizacja jest obecnie standardową technologią, stosowaną powszechnie w IT. Od środowiska chmury prywatnej dzieli ją jednak długa droga, gdyż wymaga ona uzupełnienia o istotne składniki.

Jakie są różnice między chmurą a wirtualizacją

Wirtualizacja jest obecnie standardową technologią, stosowaną powszechnie w IT. Od środowiska chmury prywatnej dzieli ją jednak długa droga, gdyż wymaga ona uzupełnienia o istotne składniki.

Rekomendacje



Serwisy IDG - Warunki obsługi - Kontakt - Redakcja - Regulamin - O nas - Polityka prywatności - Serwis zgodny z ASME
Reklama - Licencjonowanie treści - Prenumerata: Computerworld, Networld, PC World
Computerworld Polska i Computerworld Polska online są znakami towarowymi IDG Poland SA.
© Copyright 2012 International Data Group Poland S.A. 04-204 Warszawa ul. Jordanowska 12 tel.(+4822)321-78-00 fax(+4822)321-78-88