Gyakorlati alapok II.
Amikor az osztály vagy metódus elavult (deprecated)
Napjaink egyre gyorsuló technológiai fejlődési ütemének egyik hátránya, hogy rendkívül hamar válnak egész technológiai rendszerek elavulttá. Magát a fejlődést persze ez nem igazán aggasztja, hanem csak dübörög a maga útján, bár azért a nyersanyagok és erőforrások ilyetén mértékű devalválódása már felveti a fenntartható fejlődés kérdését egy olyan véges rendszerben, mint a Föld. (Ne legyenek kétségeink: a fejlődés ilyen lendülete hosszabb távon nem tartható fent globális konfliktusok nélkül.)
A devalválódás természetesen a programozási nyelveket is érinti. Például manapság (2016) már senki sem tanítja-tanulja a Pascalt, de még objektumorientált verzióját, a Delphit sem, sőt rengeteg további programozási nyelv tűnt el az idő útvesztőjében.
Egy programozási nyelv "halálának" több oka lehet:
-
olyan irányban változik meg és válik dominánssá a technológia, amelyet a nyelv már nem képes támogatni,
-
megváltozhat a programozási szemlélet, amelyet a nyelv már nem tud vagy nem akar követni,
-
a nyelvet nem fejlesztik tovább vagy fejlesztése megakad,
-
előfordulhat a fenti esetek kombinációja is.
A Java is régen kihalt volna már (vagy legalábbis agóniába fúlt volna), ha szülőatyja James Gosling...
...nem ad neki már kezdetektől fogva helyes útirányt (illetve ha később nem fejlesztik tovább). Nem állítom, hogy a Java-nyelv a világ legfontosabb programozási nyelve volna (programozók egy kicsiny, a Szent Grált algoritmusokban kereső csoportjának egyik fő ismérve, hogy "lenéznek" bizonyos programozási nyelveket, sajátjukat pedig az egekig magasztalják), de mégis több milliárd gépen fut valamilyen szintű Java-kód.
Egy programozási nyelv továbbfejlesztése valójában létkérdés, hiszen az "alatta" lévő technológia viszont gyorsan változik; ez a Java esetében sincs másképpen. Ennek során lényegében az uralkodó programozási szemlélet és technológia követelményeit illesztik rá a programozási nyelvre, a Java esetében a JVM-re, esetleg egyszerűen a fejlesztőknek eszükbe jutott valami új dolog. A fejlesztés fáradságos és kiemelt szaktudást igényel, hiszen mivel valójában rendszerprogramozásról van szó, mindenképpen meg kell találni a legjobb, az optimális megoldást. (Természetesen minden programozónak erre kell törekednie, de azért bizonyos mértékig kötetlenebb lehetőségeket enged meg az alkalmazásszintű programozás, hiszen az a keretrendszer szinte teljes védelme alatt zajlik.)
Egy programozási nyelv továbbfejlesztése során új osztályok, új metódusok keletkeznek és néhány régi elavulttá válhat. Az angol szakszó erre: deprecated. Ezt az Eclipse külön is jelzi olyasformán, hogy az elavult metódus nevét középen áthúzza, például:
Az alábbi, még futtatható Java kódban egy ilyen jellegű metódust tanulmányozhatunk:
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
FileOutputStream fileOutputStream = new FileOutputStream("D:\\PI.txt");
PrintStream printStream = new PrintStream(fileOutputStream);
printStream.print(3.1415926);
DataInputStream dataInputStream = new DataInputStream(new
FileInputStream("D:\\PI.txt"));
String PI = dataInputStream.readLine();
System.out.println(PI);
fileOutputStream.close();
printStream.close();
dataInputStream.close();
}
}
Végeredmény:
a konzolon és a PI fájlban 3.1415926
A metódus még működőképes (a jelenlegi Java-verziószám 8), ám garantált, hogy a későbbiekben a rendszerből kivezetésre fog kerülni, tehát a deprecated minősítésű kódhasználattal valójában ez a baj: esetleges Java-update (verzióváltás, újabb verzió telepítése) esetén már szavatoltan nem lesz futtatható. Következésképpen a deprecated minősítésű kódokat előbb-utóbb mindenképpen újabbakra kell lecserélni.