![]() |
| |||
![]() | ||||
|
Kas vyko ar įvyko? Ankstyvosios kompiuterių istorijos Lietuvoje epizodai Ankstesni istorijos epizodai: skiemenuoklis SKIE-MUO Pirmasis Java įskiepis Lietuvoje Taip pat skaitykite alternatyvų variantą Situacija ir prielaidos 1996 m. sausio 23 d. Sun išleido pirmąją Java versiją (JDK 1.0), o vasario 19 d. ją patikslino (JDK 1.1). Netrukus pagrindinės naršyklės įtraukė galimybę vykdyti Java įskiepius (apletus). Tuo metu populiaresnėmis naršyklėmis buvo Netscape Navigator (pilna 1.0 versija pasirodė 1994 m. gruodį Mosaic pavadinimu) ir Internet Explorer (pasirodęs 1995 m.), stoję į naršyklių karą. Komercinis NN 2.0 (pasirodęs 1996 m. vasario 5 d.; 8 MB apimties) jau tapo normalia naršykle, pirmąja įtraukusia JavaScript (tada vadintą LiveScript), o taip pat el. pašto klientą. Java pasirodė NN 2.02 versijoje (1996 m. gegužė; jo ekrano kopiją žr. priede 3). Tuo tarpu NN 3.0 jau turėjo applet tagą (1996 m. rugpjūtis). Ir štai esant tokiai situacijai, nusprendžiau Vartiklį (įkurtą 1996 m. vasario 23 d.), iki tol platintą BBS stotyse bei el.paštu, perkelti ir į WWW. Jį priėmė Elneta, kur jis ir iki šiol reziduoja ir pirmoji internetinė Vartiklio versija buvo nr. 7, pasirodžiusi 1996 m. gegužės 1 d.. Pirmoji žinutė apie Java Vartiklyje pateikta jau nr. 6 (1996 m. balandžio 12 d., žr. >>>>>). Taigi, ši tema jau tada man nedavė ramybės, nors Java ateitis tuo metu buvo dar visai neaiški. Ir pagaliau 1996 m. spalio mėn., sužinojęs, kad Java pradėjo bandyti Gediminas Rūkas, paklausiau, ar jis negalėtų Vartikliui sukurti teksto sukimo įskiepį (apletą). Tiesa, turiu nukrypti, paminėdamas, kad tuo metu mudu su Gediminu dirbome skirtingoms kompanijoms kurdami ar palaikydami tų pačių sričių produktus (turiu pabrėžti, kad Gedimino sukurta lietuvybės palaikymo tvarkyklė Windows terpei WinLika turėjo labai pažangių elementų). Ir likimo ironija po 25 metų mes abu dirbame tame pačiame projekte kurdami produktą Java pagrindu (tik dabar naudojant jau Java 8, ruošiantis pereiti prie Java 11). ScrollText pasirodymas Į Vartiklį ScrollText buvo patalpinta 1996 m. spalio 29 d. Jo getAppletInfo esančiame Įskiepio aprašyme "ScrollText - new by gr" gr reiškia Gediminas Rūkas (žr. įskiepio kodą priede 2). Taigi, matome, kad įskiepis buvo sukurtas pačioje Java kūdikystėje, tad tikriausiai tai pirmasis Lietuvoje sukurtas ir realiai naudotas Java įskiepis (jo panaudojimo pavyzdys priede 1). Jei turite kokios nors papildomos informacijos apie ankstyvąjį Java naudojimą, prašau pranešti. Pasižiūrėjimas Nuo 2013 m. dauguma naršyklių ėmėsi riboti Java įskiepių palaikymą, o 2015-17 m. praktiškai jie jau buvo visai pašalinti (nepalaikomi). Todėl Vartiklyje ScrollText įskiepį išjungiau. Tačiau jis liko svetainėje, ir gali būti išbandytas. Originalus įskiepis yra adresu http://www.vartiklis.lt/rukas/bega.htm Vis tik peržiūrėti įskiepio veikimą naršyklėje šiuo metu yra problematiška (Pastaba: naršyklėms, turinčioms suderinamumo (compatibility) nustatymus, galima pabandyti įjungti suderinamumą su seniausia leidžiama versija ir nustatyti žemiausią saugumo lygį kaip tai atliekama priklauso nuo konkrečios naršyklės). Tačiau tam liko ir kitų galimybių. Paprastesnis būdas yra panaudoti AppletView programą (žr.
>>>>>), esančią Sun
JDK pakete. Jį naudojant galite vykdyti komandas: Priede 2 pateiktas pilnas įskiepio pradinis tekstas. Tad galite bandyti jį įvykdyti, pvz., vykdant iš Eclipse, jos
konfigūracijoje nustačius parametrui ScrollText sukamo teksto eilutę, kaip nurodyta pavyzdyje: (C)2019, Vartiklis. Draudžiama bet kokiu būdu naudoti visą ar atskirą šio teksto dalį be atskiro leidimo ir nenurodžius šaltinio. Priedas 1. ScrollText įskiepio panaudojimas <HTML><HEAD> <TITLE>Running Vartiklis</TITLE> </HEAD><BODY> <APPLET code="ScrollText.class" width = 540 height = 21> <param name="ScrollText" value="Vartiklis. Redaktorius J.Skendelis. Puikiausias elektroninis laikrastis"> </APPLET> </BODY></HTML> Priedas 2. Įskiepio ScrollText kodas Pastaba: Čia pateikiamas tekstas nežymiai modifikuotas, kad būtų kompiliuojamas su Java 8. import java.applet.Applet; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Image; public class ScrollText extends Applet implements Runnable { Thread scrollThread; int bannerHeight = 20; int maxWidth; int maxHeight; int off_x = 2; int off_y = 2; public static String message = "Vartiklis"; int messageX; int messageY; int messageW; int scrollUnit = 10; int sleepTime = 150; public Dimension lastS; public Font messageF; Image textImage; Graphics textGC; static boolean loaded; Image bannerImage; Graphics bannerGraphic; public void init() { Dimension localDimension = size(); maxWidth = localDimension.width; bannerHeight = (this.maxHeight = localDimension.height); bannerImage = createImage(maxWidth, bannerHeight); bannerGraphic = bannerImage.getGraphics(); lastS = new Dimension(1, 1); setBackground(Color.lightGray); message = readText(); message = (message == null) ? "Vartiklis" : message; createBannerParams(); setLayout(new BorderLayout()); } public void start() { if (scrollThread == null) { scrollThread = new Thread(this); scrollThread.start(); loaded = true; } } public void stop() { if ((scrollThread != null) && (scrollThread.isAlive())) { scrollThread.stop(); } loaded = false; messageX = maxWidth; scrollThread = null; } public void run() { Thread localThread = Thread.currentThread(); localThread.setPriority(1); textImage = createImage(maxWidth, bannerHeight); textGC = textImage.getGraphics(); repaint(); while (scrollThread == localThread) { while (loaded) { nextPos(); try { Thread.sleep(sleepTime); } catch (InterruptedException localInterruptedException) {} } } } public String readText() { String str = null; try { str = getParameter("ScrollText"); } catch (Exception localException) { str = "Info Info Info Info"; } return str; } public void create3D(Graphics paramGraphics) { paramGraphics.setColor(Color.white); paramGraphics.drawLine(0, 0, 0, bannerHeight); paramGraphics.drawLine(0, 0, maxWidth, 0); paramGraphics.setColor(Color.black); paramGraphics.drawLine(maxWidth + 1, bannerHeight + 1, maxWidth + 1, 0); paramGraphics.drawLine(maxWidth + 1, bannerHeight + 1, 0, bannerHeight + 1); } public void paint(Graphics paramGraphics) {} public synchronized void update(Graphics paramGraphics) { if (loaded) { textGC.setColor(Color.gray); textGC.fillRect(1, 1, maxWidth - 1, bannerHeight - 1); textGC.setColor(Color.black); textGC.drawString(message, messageX + off_x, messageY + off_y); textGC.setColor(Color.lightGray); textGC.setFont(messageF); textGC.drawString(message, messageX, messageY); paramGraphics.drawImage(textImage, 0, 0, this); create3D(paramGraphics); } } public synchronized void nextPos() { messageX -= scrollUnit; if (messageX + messageW < 0) { messageX = lastS.width; } repaint(); } public void createBannerParams() { int i = maxWidth; int j = bannerHeight; lastS.width = i; lastS.height = j; int k = bannerHeight; Font localFont = new Font("TimesRoman", 1, k); setFont(localFont); FontMetrics localFontMetrics1 = getFontMetrics(localFont); int m = localFontMetrics1.getHeight(); m = k * (j - 2) / m; messageF = new Font("TimesRoman", 1, m); FontMetrics localFontMetrics2 = getFontMetrics(messageF); m = localFontMetrics2.getHeight(); messageX = i; messageY = ((j - m >> 1) + localFontMetrics2.getAscent()); messageW = localFontMetrics2.stringWidth(message); off_x = (m / 15); if (off_x < 2) { off_x = 2; } off_y = (m / 20); if (off_y < 2) { off_y = 2; } } public String getAppletInfo() { return "ScrollText - new by gr"; } public ScrollText() {} } Priedas 3. Netscape 2.02 Windows 95 terpėje
Matematikos skiltis (C)2019, Vartiklis. Draudžiama bet kokiu būdu naudoti visą ar atskirą šio teksto dalį be atskiro leidimo ir nenurodžius šaltinio. |