Java

Niezawodność również bezpieczeństwo

W zamierzeniu Java miała zastąpić C++ - obiektowego następcę języka C. Jej projektanci zaczęli od chwili rozpoznania gildia języka C++, które są przyczyną największej liczby błędów programistycznych, aby utworzyć zbiór znaków stojący do wnętrza użyciu, pewny również niezawodny.

O jak bardzo po pięciu odsłonach Javy jej niewinność jest dyskusyjna, o tyle zbiór znaków właściwie robi dużo, tak aby utrudnić programiście popełnienie błędu. Przede wszystkim Java ma szyk wyjątków czy sytuacji, kiedy szyfr programu natrafia na nieprzewidywane trudności, takie w charakterze np.:

  • operacje na elemencie ułożenie ciała zadeklarowaną granicą tablicy to znaczy elemencie pustym
  • czytanie z niedostępnego pliku oznacza to nieprawidłowego adresu URL
  • podanie nieprawidłowych danych na wskroś użytkownika

W innych językach programowania programista dokładnie być może wejść wewnętrzne testy sprawdzające prawidłowość danych, pozycję indeksu tablicy, inicjalizację zmiennych itd., jakkolwiek jest to jego włość zapęd również nie jest to w jakiś sposób w szczególności wspierane wskroś ustalony język. W Javie jest w inny sposób - obsługa wyjątków jest obowiązkowa, bez tego plan się nie skompiluje. Przy tym obiekty wchodzące wewnątrz repozytorium pakietu standardowego Javy (i większa część obiektów z pakietów pochodzących od czasu poważnych programistów niezależnych) implementują wyjątki wewnątrz każdym miejscu kodu, którego wykonanie jest niepewne ze względu na warunki zewnętrzne.

Sama obsługa wyjątków polega na napisaniu kodu, który wykona się wewnątrz odpowiedzi na taką sytuację nadzwyczajną. Może to znajdować się np. podstawienie wartości domyślnej poniżej natrafieniu na nieprawidłową wzór parametru, zaniechanie danej akcji oraz powrót do stanu stabilnego innymi słowy choćby zapisanie pracy nim wyjściem. W sytuacji wyjątkowej plan przerywa normalne wykonanie oraz tworzy ulubiony przedmiot wyjątku odpowiedniej klasy, który "wyrzuca" z normalnego biegu programu. Następnie zdefiniowany na wskroś użytkownika szyfr "łapie" ten przedmiot wyjątku także podejmuje odpowiednie działanie. Działanie być może istnieć dwojakiego typu: wspomniane wyżej środki zaradcze czyli wyparcie się takiego "śmierdzącego jaja" dalej, do bloku programu, który nakazał wykonanie wadliwej operacji. Takie podawanie sobie wyjątku prawdopodobnie istnieć wieloetapowe dodatkowo jeżeli skończy się wewnątrz bloku głównym programu powoduje jego rozbicie także wydanie błędu krytycznego.

Oprócz systemu wyjątków Java od czasu wersji 1.4 ma dwójka inne systemy wspomagające pisanie niezawodnych programów: logowanie oraz asercje. Pierwsze pozwalają na zapisanie wewnątrz plikach dziennika przebiegu działania programu, z dodatkową możliwością filtrowania zawartości, określenia poziomu logowanych błędów itp. Drugie rozstrzygnięcie pozwala na upewnienie się, że pewne założenia co do określonych wyrażeń (np. że liczba, z której wyciągamy rdzeń jest nieujemna) są prawdziwe. Asercje są o tyle ciekawe, że działają ledwo z odpowiednią opcją wykonania programu, za sprawą czemu programista przypuszczalnie stwierdzić wpływ programu, oraz potem bez wysiłku sprowadzić pozostawienie testowej części kodu po prostu wskroś ominięcie tej opcji.