Libri di testo - Tutorial su Internet java

di il
13 risposte

Libri di testo - Tutorial su Internet java

Buongiorno,
dopo esser riuscito a far girare il primo programmino Java... mi sono appassionato!
Chiedo se potete indicarmi come muovere i primi passi nell'apprendimento del linguaggio Java
Vorrei sapere se esiste un tutorial in internet o se devo acquistare qualche libro di testo per iniziare ad avere i primi rudimenti.

Poi se qualcuno vuole perdere un po' di tempo chiederei un processo di reverse engineering: vorrei fornire il mio codice e sapere tutte le boiate che ho scritto facendo copia e incolla qua e la' di codici nella rete.

Grazie a tutti per l'attenzione

13 Risposte

  • Re: Libri di testo - Tutorial su Internet java

    Su internet trovi libri gratuiti anche su java ,prova a vedere qua http://www.mokabyte.it/category/books , altra fonte sono le biblioteche dove potrai trovare dei testi utili ,se trovi un manuale veramente buono compralo,in questa fase ti consiglierei di orientarti verso libri che approfondiscono il linguaggio piuttosto che vagare tra le mille "librerie" di java ,
    "reverse engineering" se hai fatto il programma perchè vuoi farmelo decompilare? non potresti fornire i sorgenti ? (non a me perchè conosco poco java),potresti provare a fare dei programmi che usano anche xml ed sql tanto per imparare cose che dovrai usare molto probabilmente ,
  • Re: Libri di testo - Tutorial su Internet java

    Grazie per l'indicazione...
    Non voglio far decompilare niente a nessuno, certo che fornisco i sorgenti, se per sorgenti intendi le riche di codice!
  • Re: Libri di testo - Tutorial su Internet java

    Non ho idea della complessità del codice in questione ma potresti provare a metterlo a posto da solo seguendo le regole di buon senso che si usano anche in programmazione,ad esempio usare nomi variabile descrittivi senza essere troppo lunghi , vedere se possiamo fare un metodo riusabile invece di scrivere lo stesso codice in più punti e cose così ,cerca su google "programmazione software regole" e guarda i primi risultati
  • Re: Libri di testo - Tutorial su Internet java

    marco26762 ha scritto:


    o se devo acquistare qualche libro di testo per iniziare ad avere i primi rudimenti.
    Sì, ti conviene prendere un buon libro. Quelli su Java di Claudio De Sio Cesari sono spesso ben citati sui forum (sebbene non li ho mai letti).

    marco26762 ha scritto:


    chiederei un processo di reverse engineering: vorrei fornire il mio codice e sapere tutte le boiate che ho scritto facendo copia e incolla qua e la' di codici nella rete.
    Non è molto chiara la questione.
  • Re: Libri di testo - Tutorial su Internet java

    Ecco qui, tanto non c'è nulla da nascondere se non errori su errori, anche se ill programma funziona alla perfezione. Ma mi piacerebbe che fosse anche bello da "leggere"
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.HeadlessException;
    import java.awt.Label;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.InetSocketAddress;
    import java.net.Socket;
    import java.net.SocketAddress;
    import java.net.URL;
    import java.net.UnknownHostException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JProgressBar;
    import javax.swing.JTextField;
    import javax.swing.SwingConstants;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
    
    public class main  {
    private static int nj=1;	
    public static void  main(String[] arg) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException, HeadlessException, IOException {
    	
    	
    	URL url = ClassLoader.getSystemResource("sfondo2.jpeg");
    	JLabel ape=new JLabel (new ImageIcon (url));
    	JFrame sfo = new JFrame ("Ping on SAP");
    	JPanel pnl =new JPanel(); pnl.setSize(150,20);
    	pnl.setBackground(Color.WHITE);
    	sfo.setSize(400, 293);
    	sfo.setLocationRelativeTo(null);
    	pnl.setLocation(30, 220);
    	final JProgressBar pb1 = new JProgressBar();   
    	pb1.setMinimum(0);
    	pb1.setMaximum(30);
    	pb1.setStringPainted(true);
    	pnl.add(pb1);
        sfo.add(pnl);  
        sfo.add(ape); 
        sfo.setVisible(true);
                            
        for (int i = 0; i <= 30; i++) {
            final int currentValue = i;	            
            try {
               SwingUtilities.invokeLater(new Runnable() {
                   public void run() {
                        pb1.setValue(currentValue);
                    					}
                   
                    });           
                    java.lang.Thread.sleep(100);                
                } catch (InterruptedException e) {
                    JOptionPane.showMessageDialog(sfo, e.getMessage());
                }
            
            }
    
    	sfo.setVisible(false);
    	
    	
    	
    	
    do {
    		
    	
    	    nj=1;
    		UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
    		JFrame framex = new JFrame("Ping on SAP");
    		framex.setUndecorated(true);
            JPanel panelx = new JPanel();       
            panelx.setLayout(new FlowLayout());
            JLabel labelx = new JLabel("Checking Internet connection", SwingConstants.CENTER);      
            panelx.add(labelx);
           
            framex.add(panelx);       
            framex.setSize(300,30);
            framex.setLocationRelativeTo(null);     
            framex.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            framex.setVisible(true);
             try {
    			Thread.sleep(1000);
    		} catch (InterruptedException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
            
            
            
            
            //Runtime runtime=Runtime.getRuntime();
    		String ipAddress1="172.28.8.3";		
     		InetAddress inetr = InetAddress.getByName(ipAddress1);
     		System.out.println("   Sending Ping Request to " + ipAddress1);
     	if (inetr.isReachable(5000)){
     		System.out.println(ipAddress1 + " is reachable.");
     		framex.setVisible(false);
     		
     		JFrame framexa = new JFrame("Ping on SAP");
    		framexa.setUndecorated(true);
            JPanel panelxa = new JPanel();       
            panelxa.setLayout(new FlowLayout());
            JLabel labelxa = new JLabel("You are ONLINE", SwingConstants.CENTER);      
            panelxa.add(labelxa);
           
            framexa.add(panelxa);       
            framexa.setSize(300,30);
            framexa.setLocationRelativeTo(null);     
            framexa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            framexa.setVisible(true);
             try {
    			Thread.sleep(1000);
    		} catch (InterruptedException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
     		
     		framexa.setVisible(false);
     									}
     	else {
     		
     	
     		framex.setVisible(false); 		
     		JFrame framexx = new JFrame();
     		JButton but1= new JButton("CLOSE");
     		JButton but3= new JButton ("RETRY");
     		JButton but2 = new JButton(" SKIP ");
     		JLabel label = new JLabel("Internet connection seems to be down!");
            framexx.setLocationRelativeTo(null);
            final JDialog d= new JDialog(framexx,"Warning",true);
            d.setLayout(new FlowLayout());
            d.setDefaultCloseOperation(0);
            d.setSize(250,100);
            d.setLocationRelativeTo(framexx);
            d.add(label);
            
            
            but3.addActionListener (new ActionListener() {
        		public void actionPerformed (ActionEvent e) {               	    			   			
        			nj=3;   			
        			d.setVisible(false); 			
        		}
        });
          
                            
            but1.addActionListener (new ActionListener() {
        		public void actionPerformed (ActionEvent e) {               	    			
        			System.exit(0);   				
        		}
        });
            
            but2.addActionListener (new ActionListener() {
        		public void actionPerformed (ActionEvent e) {  
        			d.setVisible(false);
        		}
            });
                          
           
            d.add(but1);
            d.add(but3);
            d.add(but2);
            d.setVisible(true);	
     	    }
    			
        } while (nj>2);
    
    	Integer xbr=1;
    	Integer ni=0;
    	String ipAddress="1";
    	//String soc="1";
    	Integer sock=0;
    	Integer x=1;
    	
    	// APRO GUI INIZIALE
    		
    		 xbr=1;
    		 JTextField rd= new JTextField("10");
    		 JTextField ipA= new JTextField("00.000.000.00");
    		 final JTextField sck= new JTextField("0000");
    		 final JCheckBox cbx= new JCheckBox("Enable socket",true);
    		 
    		 cbx.addActionListener(new ActionListener(){
    		       @Override
    		        public void actionPerformed(ActionEvent arg0) {
    		            if(cbx.isSelected()){
    		                sck.setEnabled(true);
    		            } else{
    		                sck.setEnabled(false);
    		            }
    		        }
    		    });
    		 		
    		 
    		
    			 
    			 
    			 Object[] message = {
    				 "Interval request in seconds",rd,
    				 "Server IP",ipA	,cbx,
    				 "Socket",sck
    				 
    		 };
    			
    		 do {
    			 xbr=1;
    			 	 
    			 
    			 
    	int option = JOptionPane.showConfirmDialog (null, message,"Ping on SAP", JOptionPane.OK_CANCEL_OPTION);
    	
    	
    	
    	if (option==JOptionPane.CLOSED_OPTION) System.exit(0);
        if (option==JOptionPane.CANCEL_OPTION) System.exit(0);
        
        	if (option == JOptionPane.OK_OPTION) {
        		
        		ipAddress = ipA.getText();
    		String soc= sck.getText();
    		String ns = rd.getText();
    		
    		System.out.println(soc);
    		System.out.println(ipAddress);
    		System.out.println(ns);
    		
        		xbr=1;
        		
        		 
        		if (cbx.isSelected()== true){
        			Pattern patterns = Pattern.compile("[0-9]+");
        			Matcher matcher1 = patterns.matcher(soc);
        			if (matcher1.matches())
        				sock=Integer.parseInt(soc);
        				else {
        					JOptionPane.showMessageDialog(null,"You can't insert letters in socket field!", "Warning",JOptionPane.ERROR_MESSAGE);
        					xbr=3;
        						}
        		}
    			Pattern pattern = Pattern.compile("^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
    			Matcher matcher = pattern.matcher(ipAddress);
    			if (matcher.matches());
    			else {
    				JOptionPane.showMessageDialog(null,"IP Address incorrect!","Warning", JOptionPane.ERROR_MESSAGE);
    				xbr=3;
    					}
    			
    			ns=ns.replaceAll(" ","");						
    			Pattern patternd = Pattern.compile("[0-9]+");
    			Matcher matcherd = patternd.matcher(ns);
    			if (matcherd.matches())
    				ni = Integer.parseInt(ns);
    			else {
    				JOptionPane.showMessageDialog(null,"You can't insert letters in request delay!", "Warning",JOptionPane.ERROR_MESSAGE);
    				xbr=3;
    					}				
    						
        	}
        	    	    	
    	} while (xbr>2);
    	if (cbx.isSelected()== true){
    	
    				
    			try {
    				do {
    					Frame frame1 = new Frame();
    			  		 frame1.setUndecorated(true);
    			  		 Label ll = new Label("   Sending PING request to SAP Server   ", Label.CENTER); frame1.add(ll);
    			  		 frame1.pack();
    			  		 frame1.setVisible(true);
    			  		 	//Thread.sleep(1000);
    		                SocketAddress sockaddr = new InetSocketAddress(ipAddress,sock);
    		                Socket socket = new Socket();
    		                boolean online = true;
    		                try {
    		                    socket.connect(sockaddr, 10000);
    		                		}
    		                catch (IOException IOException) {
    		                    online = false;
    		                									}
    		 if(!online){
    		            System.out.println("OFFLINE");
    		         
    
    			      	x=3;
    			      	frame1.setVisible(false);
    			        System.out.println(ipAddress + " NOT reachable.");
    			        Frame framexc = new Frame();
    			        framexc.setUndecorated(true);
    			        Label lc = new Label("   SAP Server is NOT reachable    ", Label.CENTER);
    			        framexc.add(lc);
    			        framexc.pack();
    			        framexc.setBackground(Color.RED);
    			        framexc.setVisible(true);
    			        Toolkit.getDefaultToolkit().beep();
    			        try {
    						Thread.sleep(3000);
    					} catch (InterruptedException e1) {
    						
    						e1.printStackTrace();
    					}
    			        
    			        framexc.setVisible(false);
    			        final int MAX = ni;
    			        final JFrame frame2 = new JFrame();
    			        final JProgressBar pb = new JProgressBar();   
    			        	pb.setMinimum(0);
    			        	pb.setMaximum(MAX);
    			        	pb.setStringPainted(false);
    			        	pb.setForeground(Color.blue);
    			        	pb.setString("10%");
        			        frame2.setUndecorated(true);	        
    			        frame2.getContentPane().add(pb);
    			        frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			        frame2.setSize(220, 18);
    			        //frame2.setBackground(Color.DARK_GRAY);
    			        frame2.setVisible(true);
    			      
    			        for (int i = 0; i <= MAX; i++) {
    			            final int currentValue = i;	            
    			            try {
    			               SwingUtilities.invokeLater(new Runnable() {
    			                   public void run() {
    			                        pb.setValue(currentValue);
    			                    					}
    				               
    				                });
    				            
    				                java.lang.Thread.sleep(1000);
    				                
    				            } catch (InterruptedException e) {
    				                JOptionPane.showMessageDialog(framexc, e.getMessage());
    				            }
    				        
    				        }
    				      
    				        frame2.setVisible(false); 
    
    		                				}
    				
    		 
    		 
    		    if(online){
    		                    System.out.println("ONLINE");
    		                    Date date = new Date();
    			    	  		SimpleDateFormat ora;
    			    	  		ora= new SimpleDateFormat ("hh:mm");
    			    	  		x=2;
    			    	  		frame1.setVisible(false);
    			    	  		System.out.println(ipAddress + " is reachable.");
    			    	  		JFrame frame = new JFrame("Ping on SAP");                        
    			            JPanel panel = new JPanel();       
    			            panel.setLayout(new FlowLayout());
    			            JLabel label = new JLabel("FINALLY!!!");
    			            JLabel label1 = new JLabel("SAP Server is ON at "+ ora.format(date));
    			            JButton button = new JButton("Open SAP Client");
    			            panel.add(label);
    			            panel.add(label1);
    			            panel.add(button);
    			            panel.setBackground(Color.green);
    			            frame.add(panel);       
    			            frame.setSize(300,100);
    			            frame.setLocationRelativeTo(null);     
    			            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    			            frame.setVisible(true);
    			        		                			
    		                try {
    							Runtime.getRuntime().exec("say -v Victoria Attention! sap server is now reachable");
    						} catch (IOException e2) {
    							
    							e2.printStackTrace();
    						}
    			            button.addActionListener (new ActionListener() {
    			            		public void actionPerformed (ActionEvent e) {               	
    			            			try {
    			            				try {
    											Runtime.getRuntime().exec(new String[] {"open","-a","SAPGUI 7.20rev8.app"});
    										} catch (IOException e1) {
    										
    											e1.printStackTrace();
    										}
    			            				System.exit(0);
    		                Thread.sleep(1 * 2000);}
    				
    		        
    		        catch (InterruptedException h) {
    		            h.printStackTrace();
    		        }
    	}
    			            });
    		                }
    				} while(x>2 );
    	}finally {}
    	}
        // NO SOCKET OPTION
    
        if (cbx.isSelected()== false){
        		
           
    	 do{
    	  	 try {
    	  		 
    	  		 InetAddress inet =InetAddress.getByName(ipAddress);
    	  		 System.out.println("   Sending Ping Request to " + ipAddress);
    	  			  			  		 
    	  		 Frame frame1x = new Frame();
    	  		 frame1x.setUndecorated(true);
    	  		 Label llx = new Label("   Sending PING request to SAP Server   ", Label.CENTER); frame1x.add(llx);
    	  		 frame1x.pack();
    	  		 frame1x.setVisible(true);
    	  		 	Thread.sleep(1000);
    	  		 	
    	  		 	
    	      if (inet.isReachable(5000)){
    	    	  		Date datex = new Date();
    	    	  		SimpleDateFormat orax;
    	    	  		orax= new SimpleDateFormat ("hh:mm");
    	    	  		x=2;
    	    	  		frame1x.setVisible(false);
    	    	  		System.out.println(ipAddress + " is reachable.");
    	    	  		JFrame framexv = new JFrame("Ping on SAP");                        
    	            JPanel panelxv = new JPanel();       
    	            panelxv.setLayout(new FlowLayout());
    	            JLabel labelxv = new JLabel("FINALLY!!!");
    	            JLabel label1x = new JLabel("SAP Server is ON at "+ orax.format(datex));
    	            JButton buttonx = new JButton("Open SAP Client");
    	            panelxv.add(labelxv);
    	            panelxv.add(label1x);
    	            panelxv.add(buttonx);
    	            panelxv.setBackground(Color.green);
    	            framexv.add(panelxv);       
    	            framexv.setSize(300,100);
    	            framexv.setLocationRelativeTo(null);     
    	            framexv.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	            framexv.setVisible(true);
    	            
    	            Runtime.getRuntime().exec("say -v Victoria Attention! sap server is now reachable");
    	            buttonx.addActionListener (new ActionListener() {
    	            		public void actionPerformed (ActionEvent e) {               	
    	            			try {
    	            				try {
    									Runtime.getRuntime().exec(new String[] {"open","-a","SAPGUI 7.20rev8.app"});
    								} catch (IOException e1) {
    								
    									e1.printStackTrace();
    								}
    	            				System.exit(0);
                    Thread.sleep(1 * 2000);
                    
    	            			}catch (InterruptedException h) {
                h.printStackTrace();
    	            			}
    	            		} 
    	            });                       
    	      }
    			       else {
    				      	x=3;
    				      	frame1x.setVisible(false);
    				        System.out.println(ipAddress + " NOT reachable.");
    				        Frame framexx = new Frame();
    				        framexx.setUndecorated(true);
    				        Label l = new Label("   SAP Server is NOT reachable    ", Label.CENTER);
    				        framexx.add(l);
    				        framexx.pack();
    				        framexx.setBackground(Color.RED);
    				        framexx.setVisible(true);
    				        Toolkit.getDefaultToolkit().beep();
    				        Thread.sleep(3000);
    				        
    				        framexx.setVisible(false);
    				        final int MAX = ni;
    				        final JFrame frame2 = new JFrame();
    				        final JProgressBar pb = new JProgressBar();   
    				        	pb.setMinimum(0);
    				        	pb.setMaximum(MAX);
    				        	pb.setStringPainted(false);
    				        	pb.setForeground(Color.blue);
    				        	pb.setString("10%");
    	        	
    	        
    	        frame2.setUndecorated(true);	        
    	        frame2.getContentPane().add(pb);
    	        frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	        frame2.setSize(220, 18);
    	        //frame2.setBackground(Color.DARK_GRAY);
    	        frame2.setVisible(true);
    	      
    	        for (int i = 0; i <= MAX; i++) {
    	            final int currentValue = i;	            
    	            try {
    	               SwingUtilities.invokeLater(new Runnable() {
    	                   public void run() {
    	                        pb.setValue(currentValue);
    	                    					}
    	               
    	                });
    	            
    	                java.lang.Thread.sleep(1000);
    	                
    	            } catch (InterruptedException e) {
    	                //JOptionPane.showMessageDialog(framex, e.getMessage());
    	            }
    	        
    	        }
    	      
    	        frame2.setVisible(false); 
    	      
    			      }	      
    	    }catch ( Exception e ) {
    	      System.out.println("Exception:" + e.getMessage());
    	       
    	     
    	
    	    }		
        }while(x>2);	                
        }			
    
    }
    }	

    Vi prego di essere gentili Ho iniziato a programmare in Java solo da qualche giorno!!!
    P.S. Dentro ho messo un po di "fuffa" per far vedere che è un programma serio!!!
  • Re: Libri di testo - Tutorial su Internet java

    Ah... forse è meglio dire a cosa serve! Serve a sapere se un server che uso durante un corso su SAP è raggiungibile. Poi mi ha preso la mano ed ho fatto in modo che si possa mettere qualsiasi indirizzo IP, con o senza socket.
  • Re: Libri di testo - Tutorial su Internet java

    marco26762 ha scritto:


    Ma mi piacerebbe che fosse anche bello da "leggere"
    Mi spiace, ma (senza offesa) di "bello" nel tuo codice c'è ben poco. E mal indentato/spaziato, fa "troppe" cose e addirittura tutte in un unico metodo lungo quasi 500 righe.
  • Re: Libri di testo - Tutorial su Internet java

    Indentato che vuol dire?
  • Re: Libri di testo - Tutorial su Internet java

    marco26762 ha scritto:


    Indentato che vuol dire?
    https://it.wikipedia.org/wiki/Indentazion
  • Re: Libri di testo - Tutorial su Internet java

    Ok per iniziare allora:
    1) dare un nome decente alle variabili
    2) indentazione
  • Re: Libri di testo - Tutorial su Internet java

    marco26762 ha scritto:


    Ok per iniziare allora:
    1) dare un nome decente alle variabili
    2) indentazione
    3) separare meglio i concetti, in più metodi o anche con più classi. Ma per fare questo bisogna avere buone basi sulla programmazione (quella "procedurale" perlomeno e poi quella "ad oggetti").

    E per arrivarci bisogna studiare. Il copia-incolla di pezzi di codice da internet ti assicuro che non ti porta da nessuna parte ...
  • Re: Libri di testo - Tutorial su Internet java

    Infatti la discussione è cominciata con il fatto che io cercavo libri di testo!
  • Re: Libri di testo - Tutorial su Internet java

    Un solo consiglio: i libri di testo nei loro esempi introduttivi buttano dentro un sacco di cose "in più" delle basi e sarai portato a imparare tutti questi dettagli, magari pure derivanti da una libreria allegata al libro che userai. Sforzati di non perdere troppo tempo su queste cose e guarda alla struttura generale del progetto: con che criterio vengono create le classi (soggetti per esempio), i metodi (verbi) e così via
Devi accedere o registrarti per scrivere nel forum
13 risposte