Java 3D

Historycznie pierwszym i najbliżej związanym z Java interfejsem programistycznym jest Java 3D. Projekt zapoczątkowany był przez Sun i innych liderów branży programistycznej, a jego pierwsza wersja została udostępniona publiczności w 1998 roku. Na początku roku 2000, rozwój Java 3D został zaniechany na rzecz wciąż rozwijanego projektu JavaFX, którego głównym przeznaczeniem są tzw. bogate aplikacje internetowe (RIA – Rich Internet Applications). W 2008 roku producent udostępnia kod źródłowy biblioteki na licencji GPL (link) i od tego momentu projekt rozwijany jest przez społeczność skupiona wokół Sun oraz Javy.

Java 3D (link) jest darmowa biblioteka służącą do generowania obrazów 3D, która wykorzystuje graf sceny do organizacji wirtualnych obiektów, które są następnie rysowane na ekranie. Rozszerzenie to zostało zaprojektowane w taki sposób, aby moc obsłużyć zarówno wizualizacje prostych obiektów, jak i tworzenie zaawansowanych gier (link). Java 3D przede wszystkim zajmuje się logika aplikacji i uporządkowaniem trójwymiarowych obiektów, natomiast obraz generowany jest przy pomocy narzędzi niskiego poziomu – OpenGL lub Direct3D. Zastosowanie tych standardów umożliwia korzystanie z dobrodziejstw sprzętowej akceleracji (link). Ponadto biblioteka umożliwia obsługę wielu wyświetlaczy, programów cieniujących (programable shaders), a także dźwięku przestrzennego.

Należy pamiętać, że Java 3D, chociaż nie daje zupełnej kontroli nad samym procesem generowania obrazu, jest pełnokrwistym językiem programowania. Pozwala na wykorzystywanie zaawansowanych struktur danych i architektury obiektowej. Z jednaj strony daje to nieograniczone możliwości, z drugiej jednak, każda aplikacja obarczona jest charakterystycznym dla Javy narzutem w warstwie abstrakcji, który wzmaga się wraz ze wzrostem komplikacji programu. Na stronie domowej projektu dostępna jest pełną dokumentacja (link), można również znaleźć kilka oficjalnych tutoriali (link), chociaż całość zdaje się być odrobinę zapomniana i zaniedbana, o czym świadczyć może wiele niedziałających odnośników Przykładowy program z oficjalnego poradnika Java 3D (link) rysujący oświetloną kule.

        1     import com.sun.j3D.utils.geometry.*;
        2     import com.sun.j3D.utils.universe.*;
        3     import Javax.media.j3D.*;
        4     import Javax.vecmath.*;
        5     public class Ball {
        6       public Ball() {
        7         // tworzymy Wszechświat
        8         SimpleUniverse universe = new SimpleUniverse();
        9         // tworzymy strukturę, która będzie zawierać obiekty
        10        BranchGroup group = new BranchGroup();
        11        // tworzymy kulę i dodajemy ją do grupy obiektów
        12        Sphere sphere = new Sphere(0.5f);
        13        group.addChild(sphere);
        14        // tworzymy czerwone światło
        15        Color3f light1Color = new Color3f(1.8f, 0.1f, 0.1f);
        16        BoundingSphere bounds =
        17        new BoundingSphere(new Point3D(0.0,0.0,0.0), 100.0);
        18        Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
        19        DirectionalLight light1
        20  	      = new DirectionalLight(light1Color, light1Direction);
        21        light1.setInfluencingBounds(bounds);
        22        group.addChild(light1);
        23        // ustawiamy widok w kierunku kuli
        24        universe.getViewingPlatform().setNominalViewingTransform();
        25        // dodajemy stworzoną grupę obiektów do Wszechświatu
        26        universe.addBranchGraph(group);
        27      }
        28      public static void main(String[]args) { new Ball(); }
        29      }

Komentowanie nieaktywne.