A programozási nyelvek tanulásának első lépése a „Hello World!” szintaktikájának megismerése, és egyben teszt arra is, hogy megfelelő-e a fejlesztői környezet telepítése, konfigurálása. Megjelenik-e a „Hello World!” a konzolon, felbukkanó ablakban, önálló ablakban, weblapon, üzenetben? Mit kell ezért tenni? Néhány Java példát nézünk erre.
1. Konzolos megoldás
Ez a kiinduló állapot. Futtatva a programot, a konzolon jelenik meg a szöveg.
1 2 3 4 5 |
public class Hello1 { public static void main(String[] args) { System.out.println("Hello World!"); } } |
2. Swing 1. megoldás
Itt felbukkanó párbeszédablakban jelenik meg a szöveg. A JOptionPane ablaka itt önálló, így nincs olyan szülője/tulajdonosa ( null), ahonnan elveheti a fókuszt.
1 2 3 4 5 6 7 |
import javax.swing.JOptionPane; public class Hello2 { public static void main(String[] args) { JOptionPane.showMessageDialog(null, "Hello World!"); } } |
3. Swing 2. megoldás
Itt egy testre szabott JFrame utód készül, alapvető beállításokkal. Az ablak címsorában jelenik meg a szöveg. Az ablak saját magát példányosítja és főablakként viselkedik, vagyis gondoskodik saját maga láthatóságáról, fókusz- és eseménykezeléséről (utóbbi 2 most nincs).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import javax.swing.JFrame; public class Hello3 extends JFrame { public Hello3() { setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(400, 200); setTitle("Hello World!"); setVisible(true); } public static void main(String[] args) { new Hello3(); } } |
4. JavaFX megoldás
Itt egy testre szabott Application utód készül, minimál beállításokkal. Az ablak címsorában jelenik meg a szöveg. Az ablak saját magát példányosítja és főablakként viselkedik.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import javafx.application.Application; import javafx.stage.Stage; public class Hello4 extends Application { @Override public void start(Stage primaryStage) { primaryStage.setTitle("Hello World!"); primaryStage.show(); } public static void main(String[] args) { launch(args); } } |
5. Applet megoldás
Böngészőben fut a testre szabott JApplet utód. A weblapon elfoglalt téglalap alakú területen vízszintesen balra és függőlegesen középen jelenik meg a címke komponensben a szöveg.
1 2 3 4 5 6 7 8 9 |
import javax.swing.JApplet; import javax.swing.JLabel; public class Hello5 extends JApplet { @Override public void init() { add(new JLabel("Hello World!")); } } |
6. JSP 1. megoldás
Ez egy JSP weboldal automatikusan generált forráskódja. Böngészőben jelenik meg a szöveg.
1 2 3 4 5 6 7 8 9 10 11 |
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Hello World!</h1> </body> </html> |
7. JSP 2. megoldás
Ez egy JSP weboldal egyszerű direktívával a h1 címsorban.
1 2 3 4 5 6 7 8 9 10 11 |
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1><%="Hello World!"%></h1> </body> </html> |
8. Servlet megoldás
Itt egy szervlet által generált weboldal, amely fixen tartalmazza a szöveget.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = {"/Hello6"}) public class Hello6 extends HttpServlet { protected void processRequest( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try(PrintWriter out=response.getWriter()) { out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet Hello6</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } } ... } |
9. Atipikus 1. megoldás
„Adatbázisból is lekérdezhető” a szöveg.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; public class Hello7 { public static void main(String[] args) { try { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection c=DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe", "HR", "hr"); ResultSet rs=c.createStatement().executeQuery( "SELECT 'Hello World!' FROM DUAL"); rs.next(); System.out.println(rs.getString(1)); c.close(); } catch(SQLException | ClassNotFoundException e) { e.printStackTrace(); } } } |
10. Atipikus 2. megoldás
Ebben az esetben a Java nyelv által biztosított véletlenszám generáló osztályra támaszkodva állítjuk elő a szöveget. Mivel a random objektum által előállított számok csupán a véletlenség látszatát keltik, de valójában egy algoritmus szerint készülnek, ezért előre teljes pontossággal megjósolható a kimenet. Csupán meg kell találni azt a kezdőértéket, ami után „véletlenül” pont a h, e, l, l, o betűk fognak következni. Megismételve a folyamatot egy másik kezdőértékkel, megkapjuk a w, o, r, l, d betűket is.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.Random; public class Hello8 { static String randomString(int seed) { Random random=new Random(seed); StringBuilder word=new StringBuilder(); int i; while((i=random.nextInt(27))!=0) word.append((char)('`' + i)); return word.toString(); } public static void main(String[] args) { String hello=randomString(-229985452); String world=randomString(-147909649); System.out.println(hello+" "+world); } } |
A bejegyzéshez tartozó teljes forráskódot – több projektben – ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.
A példák a Java SE szoftverfejlesztő tanfolyam, a Java EE szoftverfejlesztő tanfolyam és a Java adatbázis-kezelő tanfolyam több alkalmához is kötődnek (kivéve 4. és 5.).
Hivatkozások a témakörben, amelyek más programozási nyelvek példáit is tartalmazzák:
- „Helló, világ!” programpéldák listája
- The Hello World Collection
- Say ‘Hello World&’ in 28 Different Programming Languages – Excel with Business
- Viccesen: Evolution of a Programmer – Hello World
- Atipikus megoldások: Weirdest obfuscated “Hello World!”
- Why does this code using random strings print “hello world”?
A blog bejegyzés kiemelt képe Piet nyelven a „Hello, world!”:
http://www.retas.de/thomas/computer/programs/useless/piet/explain.html
A 9-es feladat 1-es megoldása, az adatbázisos lekérdezés megoldható volna erőforráskezelő
try
utasítással is. A kapcsolatot deklarálhatnánk atry
után helyezett zárójelben, és így elhagyható aclose()
metódus hívás, hiszen a zárójelben deklarált erőforrást azonnal lezárja a végén.link: https://stackoverflow.com/a/8066594
Igen Attila, az implementált AutoCloseable interfész teszi ezt lehetővé.