lunes, 7 de diciembre de 2009

operaciones con matrices

public class TodasOperaciones extends javax.swing.JApplet {

/** Initializes the applet TodasOperaciones */
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
@SuppressWarnings("unchecked")
//
private void initComponents() {

jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
jTextField4 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea2 = new javax.swing.JTextArea();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jScrollPane3 = new javax.swing.JScrollPane();
jTextArea3 = new javax.swing.JTextArea();
Multiplicacion = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();

jPanel1.setBackground(new java.awt.Color(204, 255, 255));

jLabel1.setForeground(new java.awt.Color(255, 51, 51));
jLabel1.setText("Operaciones Matrices");

jLabel2.setText("Ingrese las Matrices");

jLabel3.setText("Matriz 1");

jLabel4.setText("Numero de Filas");

jLabel5.setText("Numero de Columnas");

jLabel6.setText("Matriz 2");

jLabel7.setText("Numero de Filas");

jLabel8.setText("Numero de Columnas");

jButton1.setText("Leer Matriz 1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Imprimir Matriz 1");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);

jTextArea2.setColumns(20);
jTextArea2.setRows(5);
jScrollPane2.setViewportView(jTextArea2);

jButton3.setBackground(new java.awt.Color(255, 204, 255));
jButton3.setText("Leer Matriz 2");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});

jButton4.setText("Suma");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});

jButton5.setBackground(new java.awt.Color(255, 204, 255));
jButton5.setText("Imprimir Matriz 2");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});

jButton6.setText("Resta");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});

jTextArea3.setColumns(20);
jTextArea3.setRows(5);
jScrollPane3.setViewportView(jTextArea3);

Multiplicacion.setText("Multiplicacion");
Multiplicacion.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
MultiplicacionActionPerformed(evt);
}
});

jButton8.setText("M. Transpuesta");
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(305, 305, 305)
.addComponent(jLabel1))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(98, 98, 98)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3)
.addComponent(jLabel2)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton1)
.addGap(18, 18, 18)
.addComponent(jButton2))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(10, 10, 10)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4)
.addComponent(jLabel5))
.addGap(39, 39, 39)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jTextField2)
.addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE)))))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(191, 191, 191)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jButton6)
.addComponent(jButton4))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton8)
.addComponent(Multiplicacion))
.addGap(86, 86, 86)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel7)
.addComponent(jLabel8))
.addGap(42, 42, 42)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jTextField4, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 69, Short.MAX_VALUE)))
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton3)
.addGap(35, 35, 35)
.addComponent(jButton5)))))
.addContainerGap(2029, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(26, 26, 26)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel8)
.addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(16, 16, 16)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jButton1)
.addComponent(jButton2))
.addGap(13, 13, 13)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton3)
.addComponent(jButton5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(36, 36, 36)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton4)
.addComponent(Multiplicacion))
.addGap(30, 30, 30)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton8)
.addComponent(jButton6)))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(55, 55, 55)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(125, 125, 125))
);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(41, 41, 41)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(44, 44, 44)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 571, Short.MAX_VALUE)
.addContainerGap())
);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String aux = jTextField1.getText();
nF = Integer.parseInt(aux);
aux = jTextField2.getText();
nC = Integer.parseInt(aux);
m = new Matriz(nF,nC);
m.leer();
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
jTextArea2.setText(m.toString());
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
String aux = jTextField3.getText();
nF = Integer.parseInt(aux);
aux = jTextField4.getText();
nC = Integer.parseInt(aux);
s = new Matriz(nF,nC);
s.leer();
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
E = new Matriz(nF,nC);
E = m.suma(s);
jTextArea1.setText(E.toString());
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
jTextArea3.setText(s.toString());
}
private void MultiplicacionActionPerformed(java.awt.event.ActionEvent evt) {
B = new Matriz(nF,nC);
B = m.Multiplicacion(s);
jTextArea1.setText(B.toString());
}
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {

}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {

A = new Matriz(nF,nC);
A = m.resta(s);
jTextArea1.setText(A.toString());
}

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {

String aux = jTextField5.getText();
int nF = Integer.parseInt(aux);
aux = jTextField6.getText();
int nC = Integer.parseInt(aux);
m3= new Matriz(nF,nC);
m3.leerMatriz();
jTextArea2.setText("\nMATRIZ: \n"+(m3.toString())+"INVERSA DE MATRICES: \n"+(m3.Inversa().toString()));
}

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {

String aux = jTextField5.getText();
int nF = Integer.parseInt(aux);
aux = jTextField6.getText();
int nC = Integer.parseInt(aux);
m3= new Matriz(nF,nC);
m3.leerMatriz();

jTextArea2.setText("\nMATRIZ: \n"+(m3.toString())+"TRANSPUESTA DE MATRIZ: \n"+(m3.Transpuesta().toString()));
}


public int nF;
public int nC;
public int m3;
public Matriz m;
public Matriz s;
public Matriz E;
public Matriz A;
public Matriz B;

// Variables declaration - do not modify
private javax.swing.JButton Multiplicacion;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton8;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextArea jTextArea2;
private javax.swing.JTextArea jTextArea3;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
// End of variables declaration
}

sumatoria de matrices

public class OperacionesMatrices extends javax.swing.JApplet {
/** Initializes the applet OperacionesMatrices */public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents()
;}});}
catch (Exception ex) {ex.printStackTrace();
}}/** This method is called from within the init() method to* initialize the form.* WARNING: Do NOT modify this code. The content of this method is* always regenerated by the Form Editor.*/@SuppressWarnings("unchecked")// private void initComponents() {jPanel1 = new javax.swing.JPanel();jLabel1 = new javax.swing.JLabel();jLabel2 = new javax.swing.JLabel();jLabel3 = new javax.swing.JLabel();jLabel4 = new javax.swing.JLabel();jLabel5 = new javax.swing.JLabel();jLabel6 = new javax.swing.JLabel();jTextField1 = new javax.swing.JTextField();jTextField2 = new javax.swing.JTextField();jLabel7 = new javax.swing.JLabel();jLabel8 = new javax.swing.JLabel();jTextField3 = new javax.swing.JTextField();jTextField4 = new javax.swing.JTextField();jButton1 = new javax.swing.JButton();jScrollPane1 = new javax.swing.JScrollPane();jTextArea1 = new javax.swing.JTextArea();jPanel1.setBackground(new java.awt.Color(204, 255, 204));jLabel1.setForeground(new java.awt.Color(255, 51, 51));jLabel1.setText("Operaciones de Matrices");jLabel2.setForeground(new java.awt.Color(255, 153, 255));jLabel2.setText("Suma de Matrices");jLabel3.setText("Matriz 1");jLabel4.setText("Matriz 2");jLabel5.setText("Numero de Filas");jLabel6.setText("Numero de Columnas");jTextField1.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {jTextField1ActionPerformed(evt);}});jTextField2.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {jTextField2ActionPerformed(evt);}});jLabel7.setText("Numero Filas");jLabel8.setText("Numero Columnas");jTextField3.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {jTextField3ActionPerformed(evt);}});jButton1.setBackground(new java.awt.Color(204, 204, 255));jButton1.setText("Suma");jButton1.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {jButton1ActionPerformed(evt);}});jTextArea1.setColumns(20);jTextArea1.setRows(5);jScrollPane1.setViewportView(jTextArea1);javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);jPanel1.setLayout(jPanel1Layout);jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGap(65, 65, 65).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jLabel3).addComponent(jLabel5).addComponent(jLabel6)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false).addComponent(jTextField2).addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE)).addGap(58, 58, 58).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jLabel7).addComponent(jLabel8).addComponent(jLabel4))).addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE)).addGap(39, 39, 39).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false).addComponent(jTextField3).addComponent(jTextField4, javax.swing.GroupLayout.DEFAULT_SIZE, 47, Short.MAX_VALUE))).addComponent(jLabel2))).addGroup(jPanel1Layout.createSequentialGroup().addGap(131, 131, 131).addComponent(jButton1)).addGroup(jPanel1Layout.createSequentialGroup().addGap(203, 203, 203).addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE))).addContainerGap(164, Short.MAX_VALUE)));jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel1Layout.createSequentialGroup().addGap(26, 26, 26).addComponent(jLabel2)).addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jLabel3).addComponent(jLabel4)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel5).addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jLabel7)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel6).addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jLabel8))).addGroup(jPanel1Layout.createSequentialGroup().addGap(58, 58, 58).addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))).addGap(43, 43, 43).addComponent(jButton1).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 242, javax.swing.GroupLayout.PREFERRED_SIZE).addContainerGap(23, Short.MAX_VALUE)));javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addContainerGap().addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addContainerGap()));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addContainerGap()));}// private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:} private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:} private void jTextField3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:} private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:String aux = jTextField1.getText();String aux1="";int nF = Integer.parseInt(aux);aux = jTextField2.getText();int nC = Integer.parseInt(aux);m1 = new Matriz(nF,nC);m1.leer();aux1 += m1.toString();aux = jTextField3.getText();nF = Integer.parseInt(aux);aux = jTextField4.getText();nC = Integer.parseInt(aux);m2 = new Matriz(nF,nC);m2.leer();aux1 += m2.toString();jTextArea1.setText("Suma de Matrices: \n Matriz 1 , Matriz 2"+aux1+(m1.suma(m2)).toString());} public Matriz m1;public Matriz m2;// Variables declaration - do not modifyprivate javax.swing.JButton jButton1;private javax.swing.JLabel jLabel1;private javax.swing.JLabel jLabel2;private javax.swing.JLabel jLabel3;private javax.swing.JLabel jLabel4;private javax.swing.JLabel jLabel5;private javax.swing.JLabel jLabel6;private javax.swing.JLabel jLabel7;private javax.swing.JLabel jLabel8;private javax.swing.JPanel jPanel1;private javax.swing.JScrollPane jScrollPane1;private javax.swing.JTextArea jTextArea1;private javax.swing.JTextField jTextField1;private javax.swing.JTextField jTextField2;private javax.swing.JTextField jTextField3;private javax.swing.JTextField jTextField4;// End of variables declaration}

Que es un applet?

Un applet es una aplicación Java que se encuentra en web. El applet presenta unas diferencias con las aplicaciones comunes de Java porque no tienen ningún main, y son clases que tienen el mismo nombre que el del archivo que las incluye, que amplían la clase Applet del paquete java.applet. de esta manera de podria crear una direccion electronica que contenga la aplicacion de un programa ya realizado de esta manera podriamos compartir dicha aplicacion.
Incluso para los applets existe la versión JApplet de swing, que se utiliza para introducir componentes Swing en lugar de componentes AWT. Un applet necesita un archivo html que lo invoque. Por ejemplo, PrimoApplet.java, el applet que queremos poner en marcha, lo redactamos y el compilador genera PrimoApplet.class. Para ponerlo en marcha necesitamos un archivo html que incluya el.
Por eso en clase utilizamos el archivo web original del programa Java y lo modificamos para ver como al programar algunas lineas simple podemos modificar dicha pagina dotandola de nuestro nombre y tambien de cualquier aplicacion que ahi coloquemos.
Recordemos que se corre la pagina web modificada con la aplicacion applet y no la hoja de codigo creada por nosotros en el entorno de programacion .
Esta es una herramienta muy importande y de gran utilidad para crear paginas inteligentes en la web que podria ser beneficiosa para nuestro propio uso o de manera global dependiendo de lo que se desee hacer o lo que se desee crear y mostrar en dichas paginas ya q estan dotadas de un programa original en lenguaje Java
Un applet no se puede ejecutar de manera independiente ya que su programa base esta en otra plataforma .
Pero tiene otra utilidad como ser multiplataforma, esto quiere decir que es compatible con plataformas virtuales como Windows, Linux, etc.
En cualquier programa que soporte Java un applet podria ser utilizado

domingo, 22 de noviembre de 2009

Matriz

public class Matriz {
public int numeroFilas;
public int numeroColumnas;
public double [][]matriz;
public Matriz(){}//nF es el numero de filas//nc es el numero de columnas
public Matriz(int nF, int nC){
numeroFilas = nF;
numeroColumnas = nC;
matriz = new double [numeroFilas][numeroColumnas];
for(int i=0; i<= numeroFilas; i++)
for(int j=0; j<= numeroColumnas ; j++)
matriz[i][j]=0;}//metodo de suma de matricespublic Matriz suma(Matriz b){Matriz resultado;//primero revisamos que las filas y las columnas sean iguales//
this referencia a un objeto que au no esta creado pero que alguien algun momento lo va a crear

if((this.numeroFilas == b.numeroFilas)&& (this.numeroColumnas == b.numeroColumnas)){resultado = new Matriz(this.numeroFilas, this.numeroColumnas);
for(int i=0; i<= this.numeroFilas; i++)
for(int j=0; j<= b.numeroColumnas; j++)
resultado.matriz[i][j] = this.matriz[i][j]+ b.matriz[i][j];
return resultado;}
else
System.out.println("ERROR EN DIMENSIONES DE LAS MATRICES");
resultado=null;return resultado;}//metodo de multiplicacion de matrices//retorna una matriz resultado resta

public Matriz multiplicacion(Matriz b) {
Matriz resultado;
if(this.numeroFilas == b.numeroColumnas){

resultado=new Matriz(this.numeroFilas,b.numeroColumnas);
for(int i=0; i<= this.numeroFilas; i++)
for(int j=0; j<= b.numeroColumnas; j++)
for(int k=0; k <= this.numeroColumnas; k++)
resultado.matriz[i][j] += (this.matriz[i][k]*b.matriz[k][j]);
return resultado;
}
else {
System.out.println("error en dimensiones de las matrices");
resultado = null;return resultado;
}//devuelve el objeto matriz en texto para poderlo imprimir
}
public String toString(){
String aux="\n[\n";
for(int i=0; i<= this.numeroFilas; i++)
for(int j=0; j<= this.numeroColumnas; j++)
aux += matriz[i][j]+" ";
aux +="\n";aux+= "]";return aux;}
}

MRUV aceleracion posicion y velocidad

public class MRUV {
Matriz posicion;
Matriz velocidad;
Matriz aceleracion;

public MRUV(){
}
public MRUV(Vector3D pos, Vector3D velo, Vector3D ace)

{
posicion = pos;
velocidad = velo;
aceleracion = ace;
}
public void calcularPosicion(Vector3D r0, Vector3D vel, double t)
{
posicion = r0.suma(vel.productoVectorEscalar(t));
}
public void calcularVelocidad(Vector3D vel, double t)
{
velocidad = vel;
}
public void calcularAceleracion(Vector3D vel, double t)
{
aceleracion = vel.divicionVectorEscalar(t);
}
public static void main(String args[])
{
MRU = new MRU();

Vector3D r0 = new Vector3D(1,0,-1);
Vector3D v = new Vector3D(0,5,0);
Vector3D ace = new Vector3D(2,3,0);
double t = 2;
m.calculaPosición(r0, v, t);
m.calculaVelocidad(v, t);
m.calculaAceleracion(v,t);
}
}

domingo, 15 de noviembre de 2009

clase VECTOR 3D y producto cruz

public class Vector3D extends Matriz{
double coordenadaX;
double coordenadaY;
double coordenadaZ;

public Vector3D(){
super(1,3);

}
public Vector3D(double x, double y, double z){

super(1,3);
this.matriz[0][0] = x;
this.matriz[0][1] = y;
this.matriz[0][2] = z;
coordenadaX = x;
coordenadaY = y;
coordenadaZ = z;

}
public double magnitud(){
double resultado = 0;
for(int i=0; i<3; i++)
{
resultado += this.matriz[0][i]*this.matriz[0][i];
}
resultado = Math.sqrt(resultado);return resultado;
}
public Vector3D unitario(){
Vector3D unitario = new Vector3D();
for(int i=0; i<3; i++)unitario.matriz[0][i] = this.matriz[0][i]/this.magnitud2();
return unitario;}
public double productoEscalar(Vector3D v){
double resultado = 0;
for(int i=0; i<3; i++)resultado += this.matriz[0][i]*v.matriz[0][i];
return resultado;
}
public Vector3D productoCruz(Vector3D v){
Vector3D resultado;
resultado = new Vector3D();
resultado.matriz[0][0] = this.matriz[0][1]*v.matriz[0][2]-this.matriz[0][2]*v.matriz[0][1];
resultado.matriz[0][1] = this.matriz[0][2]*v.matriz[0][0]-this.matriz[0][0]*v.matriz[0][2];
resultado.matriz[0][2] = this.matriz[0][0]*v.matriz[0][1]-this.matriz[0][1]*v.matriz[0][0];
return resultado;
}
public static void main(String args[]){
Vector3D v1 = new Vector3D(-3,6,0);
Vector3D v2 = new Vector3D(0,4,5);
System.out.println(v1+"\n"+v2);
System.out.println(" La coordenada X es : "+v1.coordenadaX);
System.out.println("\n Suma de vectores: "+(v1.suma(v2)));
System.out.println("\n Vector magnitud es: "+v1.magnitud());
System.out.println("\n Vector unitario: "+v1.unitario());
System.out.println("\n Producto escalar es: "+v1.productoEscalar(v2));
System.out.println("\n Producto cruz es: "+v1.productoCruz(v2));
}
}

miércoles, 28 de octubre de 2009

ejecutable

public class UsoPruebaMatrices {

public static void main (String args[]){

PruebaMatrices c = new PruebaMatrices (2,3);
c.matriz[0][0] = 2; c.matriz[0][1]= 2; c.matriz[0][2]=1;
c.matriz[1][0] = 3; c.matriz[1][1]=-1; c.matriz[1][2]=0;



PruebaMatrices b=new PruebaMatrices (5,3);
b.matriz[0][0] = 6; b.matriz[0][1]= -2;b.matriz[0][2]=5;
b.matriz[1][0] = 4; b.matriz[1][1]= 2; b.matriz[1][2]=-1;
b.matriz[2][0] = 0; b.matriz[2][1]= 1; b.matriz[2][2]=1;
b.matriz[3][0] = -2; b.matriz[3][1]= -2; b.matriz[3][2]=0;
b.matriz[4][0] = 1; b.matriz[4][1]= 0; b.matriz[4][2]=-1;

PruebaMatrices a=new PruebaMatrices (1,5);
a.matriz[0][0] = 1; a.matriz[0][1]= -1;a.matriz[0][2]=0;a.matriz[0][3]=1;a.matriz[0][4]=1;

PruebaMatrices e=new PruebaMatrices (3,3);
e.matriz[0][0] = -1; e.matriz[0][1]= 0;e.matriz[0][2]=-1;
e.matriz[1][0] = 1; e.matriz[1][1]= 0; e.matriz[1][2]=1;
e.matriz[2][0] = -1; e.matriz[2][1]= 1; e.matriz[2][2]=-1;


PruebaMatrices r1;
r1=c.multiplicacion(e);
PruebaMatrices bt;
bt=b.transpuesta();
PruebaMatrices rt1;
rt1=r1.multiplicacion(bt);
System.out.println(rt1.toString());

PruebaMatrices x1;
x1=a.multiplicacion(b);
PruebaMatrices x2;
x2=x1.multiplicacion(e);
System.out.println(x2.toString());


PruebaMatrices r2;
r2=e.multiplicacion(bt);
PruebaMatrices at;
at=a.transpuesta();
PruebaMatrices rt2;
rt1=r1.multiplicacion(at);
System.out.println(rt1.toString());





}


}

prueba matrices

public class PruebaMatrices {
public int numeroFilas;
public int numeroColumnas;
public int [][] matriz;

public PruebaMatrices (){

}

public PruebaMatrices (int nF, int nC){
numeroFilas= nF;
numeroColumnas=nC;
matriz=new int [numeroFilas][numeroColumnas];

for (int i=0; i< numeroFilas; i++)
for (int j=i; j matriz [i][j]=0 ;

}





public PruebaMatrices multiplicacion (PruebaMatrices B){
PruebaMatrices resultado;
if((this.numeroColumnas==B.numeroFilas)){
resultado =new PruebaMatrices(this.numeroFilas,this.numeroColumnas);
for (int i=0; i< this.numeroFilas;i++)
for(int j=0;j resultado.matriz[i][j]+=this.matriz[i][j]*B.matriz[i][j];
return resultado;
}
else{
System.out.println("Error en dimensiones de las matrices");
resultado = null;
return resultado;
}

}
public PruebaMatrices transpuesta() {
PruebaMatrices resultado;
resultado = new PruebaMatrices(this.numeroColumnas,this.numeroFilas);
for (int i=0;i < this.numeroFilas; i++)
for(int j=0 ; j< this.numeroColumnas; j++)
resultado.matriz[j][i]= this.matriz[i][j];
return resultado;

}


public String toString(){
String aux ="[";
for (int i=0; i< numeroFilas; i++)
for (int j=0;j aux += matriz [i][j]+" ";
}
aux += "\n";
return aux;
}
}

domingo, 18 de octubre de 2009

programa de multiplicacion de matrices

public class PruebaMatriz {
public static void main(String args[]){
Matriz a= new Matriz(2, 2);
a.matriz[0][0]=1;a.matriz[0][1]=2;
a.matriz[1][0]=4;a.matriz[1][1]=3;
System.out.println( a.toString());

Matriz b= new Matriz(2, 2);
b.matriz[0][0]=5;b.matriz[0][1]=6;
b.matriz[1][0]=7;b.matriz[1][1]=8;
System.out.println( a.toString());

Matriz f;
f=a.multiplicacion(b);
System.out.println(f.toString());

}

}

matriz de multiplicacion

public class Matriz {
public int numeroFilas;
public int numeroColumnas;
public double [][] matriz;
public Matriz (){
}

public Matriz (int nF, int nC){
numeroFilas= nF;
numeroColumnas=nC;
matriz=new double [numeroFilas][numeroColumnas];
for (int i=0; i< numeroFilas; i++)
for (int j=i; j matriz [i][j]=0 ;
}

public Matriz multiplicacion (Matriz B){
Matriz resultado;
if((this.numeroFilas==B.numeroFilas)& (this.numeroColumnas==B.numeroColumnas)){
resultado =new Matriz(this.numeroFilas,this.numeroColumnas);
for (int i=0; i< this.numeroFilas;i++)
for(int j=0;j resultado.matriz[i][j]=this.matriz[i][j]*B.matriz[j][i];
return resultado;
}
else{
System.out.println("Error en dimensiones de las matrices");
resultado = null;
return resultado;
}
}

sábado, 10 de octubre de 2009

uso de atributos para automoviles

public class UsoAutos {
public static void main(String args[]){
AtribucionAutos c1=new AtribucionAutos();
c1.marca="mercedes";
c1.color="rojo";
c1.tipo="monoplaza";
c1.año="1987";
System.out.println("MARCA: "+c1.marca+"\nCOLOR: "+c1.color+ "\nTIPO: "+c1.tipo+"\nAÑO: "+c1.año);

AtribucionAutos c2=new AtribucionAutos();
c2.marca="audi";
c2.color="plomo";
c2.tipo="utility";
c2.año="2000";
System.out.println("\nMARCA: "+c2.marca+"\nCOLOR: "+c2.color+ "\nTIPO: "+c2.tipo+"\nAÑO: "+c2.año);

}
}

atributos para los automoviles

public class AtribucionAutos {
String marca;
String tipo;
String color;
String año;
}

uso de datos para el programa de estudiantes

public class UsoUniversidad {
public static void main(String args []){
Universidad u1=new Universidad();
u1.nombre="Diego";
u1.ampellido="Moreno";
u1.carrera="Mecatronica";
u1.nivel="3ero";
System.out.println("NOMBRE: "+u1.nombre+"\nAPELLIDO: "+u1.ampellido+ "\nCARRERA: "+u1.carrera+"\nNIVEL: "+u1.nivel);


Universidad u2=new Universidad();
u2.nombre="Valeria";
u2.ampellido="Velazco";
u2.carrera="Periodoncia";
u2.nivel="3ero";
System.out.println("NOMBRE: "+u2.nombre+"\nAPELLIDO: "+u2.ampellido+ "\nCARRERA: "+u2.carrera+"\nNIVEL: "+u2.nivel);


Universidad u3=new Universidad();
u3.nombre="Geovanny";
u3.ampellido="Dominguez";
u3.carrera="Ambiental";
u3.nivel="2do";
System.out.println("NOMBRE: "+u3.nombre+"\nAPELLIDO: "+u3.ampellido+ "\nCARRERA: "+u3.carrera+"\nNIVEL: "+u3.nivel);


Universidad u4=new Universidad();
u4.nombre="Alejandro";
u4.ampellido="Tobar";
u4.carrera="Mecatronica";
u4.nivel="1ero";
System.out.println("NOMBRE: "+u4.nombre+"\nAPELLIDO: "+u4.ampellido+ "\nCARRERA: "+u4.carrera+"\nNIVEL: "+u4.nivel);

}
}

atribucion datos para estudiantes

public class Universidad {
String nombre;
String ampellido;
String carrera;
String nivel;
}

domingo, 4 de octubre de 2009

comunicación orientada a objetos

Lenguaje orientado a objetos
Introducimos para los más profanos las bases sobre las que se asienta la Programación Orientada a Objetos
Se le llama así a cualquier lenguaje de programación que implemente los conceptos definidos por la programación orientada a objetos.
Cabe notar que los conceptos definidos en la programación orientada a objetos no son una condición sino que son para definir que un lenguaje es orientado a objetos. Existen conceptos que pueden estar ausentes en un lenguaje dado y sin embargo, no invalidar su definición como lenguaje orientado a objetos.
Quizás las condiciones mínimas necesarias las provee el formalismo que modeliza mejor las propiedades de un sistema orientado a objetos: los tipos de datos abstractos.
Siguiendo esa idea, cualquier lenguaje que permita la definición de tipos de datos , de operaciones nuevas sobre esos tipos de datos, y de instanciar el tipo de datos podría ser considerado orientado a objetos.
Esta definición concuerda incluso con ciertos ejemplos prácticos, que no son considerados dentro de la programación orientada a objetos, pero que podrían serlo. Por ejemplo, la programación de interfaces gráficas de usuario para los sistemas X-Window utilizando infraestructuras de funciones y APIs como Motif, Xview y Xlib, son realizadas usualmente en lenguaje C, pero organizando el código en una manera que "parecen objetos" (los Widgets).

La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.
Motivación
Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los programadores puedan ser utilizados por otras personas se creó la POO. Que es una serie de normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo, de manera que consigamos que el código se pueda reutilizar.
La POO no es difícil, pero es una manera especial de pensar, a veces subjetiva de quien la programa, de manera que la forma de hacer las cosas puede ser diferente según el programador. Aunque podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difícil no es programar orientado a objetos sino programar bien. Programar bien es importante porque así nos podemos aprovechar de todas las ventajas de la POO.
Cómo se piensa en objetos
Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como podrían ser el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como pueden ser ponerse en marcha, parar o aparcar.
Pues en un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como ponerse en marcha o parar.
Por poner otro ejemplo vamos a ver cómo modelizaríamos en un esquema POO una fracción, es decir, esa estructura matemática que tiene un numerador y un denominador que divide al numerador, por ejemplo 3/2.
La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Luego podría tener varios métodos como simplificarse, sumarse con otra fracción o número, restarse con otra fracción, etc.
Estos objetos se podrán utilizar en los programas, por ejemplo en un programa de matemáticas harás uso de objetos fracción y en un programa que gestione un taller de coches utilizarás objetos coche. Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son objetos. Es decir, el taller de coches será un objeto que utilizará objetos coche, herramienta, mecánico, recambios, etc.
Clases en POO
Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. En los ejemplos anteriores en realidad hablábamos de las clases coche o fracción porque sólo estuvimos definiendo, aunque por encima, sus formas.
Propiedades en clases
Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos.
Métodos en las clases
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.
Objetos en POO
Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de una clase se llama instanciar (que viene de una mala traducción de la palabra instace que en inglés significa ejemplar). Por ejemplo, un objeto de la clase fracción es por ejemplo 3/5. El concepto o definición de fracción sería la clase, pero cuando ya estamos hablando de una fracción en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto.
Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta dependiendo el lenguaje de programación que se emplee, pero será algo parecido a esto.
miCoche = new Coche()
Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a continuación. Dentro de los paréntesis podríamos colocar parámetros con los que inicializar el objeto de la clase coche.
Estados en objetos
Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando tenemos un coche la propiedad color tomará un valor en concreto, como por ejemplo rojo o gris metalizado. El valor concreto de una propiedad de un objeto se llama estado.
Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto.
miCoche.color = rojo
El objeto es miCoche, luego colocamos el operador punto y por último el nombre e la propiedad a la que deseamos acceder. En este ejemplo estamos cambiando el valor del estado de la propiedad del objeto a rojo con una simple asignación.
Mensajes en objetos
Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el mensaje “ponte en marcha”.
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que deseamos invocar.
miCoche.ponerseEnMarcha()
En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar paréntesis igual que cualquier llamada a una función, dentro irían los parámetros.
Otras cosas
Hay mucho todavía que conocer de la POO ya que sólo hemos hecho referencia a las cosas más básicas. También existen mecanismos como la herencia y el polimorfismo que son unas de las posibilidades más potentes de la POO.
La herencia sirve para crear objetos que incorporen propiedades y métodos de otros objetos. Así podremos construir unos objetos a partir de otros sin tener que reescribirlo todo.
El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que estamos trabajando, y abstraernos para definir un código que sea compatible con objetos de varios tipos.
Son conceptos avanzados que cuesta explicar en las líneas de ese informe. No hay que olvidar que existen libros enteros dedicados a la POO y aquí solo pretendemos dar un repaso a algunas cosas para que os suenen cuando tengáis que poneros delante de ellas en los lenguajes de programación que debe conocer un desarrollador del web.
Ejemplo concreto de programación orientada a objetos
Para conseguir un ejemplo concreto de lo que es la programación orientada a objetos, podemos entrar en el Manual de PHP 5. Realmente este manual explica las características de orientación a objetos de PHP 5 y ofrece ejemplos concretos de creación de clases con características como herencia, polimorfismo, etc.

Ejemplos de lenguajes orientados a objeto [editar]
C++
Objective C
Java
Smalltalk
Eiffel
Lexico (en castellano)
Ruby
Python
OCAML
Object Pascal
CLIPS
Visual .net
Java
Actionscript
COBOL
Perl
C#
Visual Basic.NET
PHP
Simula

miércoles, 30 de septiembre de 2009

funciones usando un for

public class Funciones {public static void main(String args[]){
double x;
double y;
for(x=0;x<=10;x=x+0.1)
System.out.println("Sen "+x+" = " +Math.sin(x));
for(x=0;x<=10;x=x+0.1)
System.out.println("Cos "+x+" = " +Math.cos(x));
e=2.718;
System.out.println("y = 2.718");
for(t=0;t<=10;t=t+0.1)
System.out.println("y ^ "+x+" = " +(Math.pow(x,y)));
for(x=0;x<=10;x=x+0.1)
System.out.println("x ^ "+y+" * cos "+x+ " = " +(Math.pow(e,t))*(Math.cos(t)));
}
}

martes, 29 de septiembre de 2009

para calcular el factorial con las letras del nombre

public class Funciones {
public long factorial (int x, int y){
int resultado=1;
int D =4;
int M = 13;
x=1;
y=1;
if (D>M)
resultado=1;

else{
for (int i=1; i<= D; i++)
x=resultado * i;
for (int j=1; j<= (M-D); j++)
y=resultado *j;
}
return resultado;
}
public static void main (String args []){
Funciones fun = new Funciones();
System.out.println(fun.factorial (x/y));
}

lunes, 28 de septiembre de 2009

public class Deber {
public static void main(String args []) {
int a;
double b;
double c;
a=5;

if (a<0){
System.out.println("Resultado de la potencia "+(a*a));
c= (double) a*a;
}
else{
System.out.println("El valor debe de a debe ser mayor a cero ");
}
if (a<=0){
c = Math.sqrt(x);
System.out.println("La raíz es igual a" +(z));
}
else{
System.out.println("El valor debe ser menor o igual a cero ");

}
if (a>=1){
c = Math.sqrt(a);
y = (double) a;
System.out.println("Resultado de la ecuación "+(c+b));
}
else{
System.out.println("El valor debe ser mayor o igual que uno");
}

}

}

martes, 22 de septiembre de 2009

LENGUAJES DE COMUNICACION

Universidad Tecnológica Equinoccial
Programación II
Diego Ivan Moreno Moreno
2009-09-15

Clasificación de los lenguajes de programación
Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:
Según el nivel de abstracción
Según el paradigma de programación que poseen cada uno de ellos
Según su nivel de abstracción
Lenguajes de Máquina
Están escritos en lenguajes directamente legibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas.
Lenguajes de bajo nivel
Lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel por excelencia es el código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de forma directa. Ejemplo:;Lenguaje ensamblador, sintaxis Intel para procesadores x86mov eax,1 ;mueve a al registro eax el valor 1xor ebx, ebx ;pone en 0 el registro ebxint 80h ;llama a la interrupción 80h (80h = 128 sistema decimal)
Ejecutar ese código en sistemas UNIX o basados en él equivale a una función exit(0) (terminar el programa retornando el valor 0)




Lenguajes de medio nivel
Lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel. Ejemplo:/*Lenguaje C*/ /*declaración de las funciones estandars de entrada y salida*/#include int main(int argc, char **argv){ char *p; /*creamos un puntero a un byte*/ if(argc == 1){ printf("\nIngrese un argumento al programa\n");/*imprimimos el texto*/ return 1; } p = 0x30000 /*el puntero apunta a 0x30000 */ *p = argv[1][0] /*el primer caracter del primer argumento lo copiamos a la posición 0x30000 */ return 0;}
El ejemplo es muy simple y muestra a los punteros de C, éstos no son muy utilizados en lenguajes de alto nivel, pero en C sí.
Lenguajes de alto nivel
Lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de alto nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o dobles sentidos. Ejemplo: {Lenguaje Pascal} program suma; var x,s,r:integer; {declaración de las variables} begin {comienzo del programa principal} writeln('Ingrese 2 números enteros');{imprime el texto} readln(x,s); {lee 2 números y los coloca en las variables x y s} r:= x + s; {suma los 2 números y coloca el resultado en r} writeln('La suma es ',r); {imrpime el resultado} readln; end.{termina el programa principal}
Ese es el lenguaje Pascal, muy utilizado por principiantes al aprender a programar.
Según el paradigma de programación
Paradigma de programación
Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas. Dependiendo de la situación un paradigma resulta más apropiado que otro.
Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en :
El paradigma imperativo o por procedimientos es considerado el más común y está representado, por ejemplo, por el C o por BASIC.
El paradigma funcional está representado por la familia de lenguajes LISP (en particular Scheme), ML o Haskell.
El paradigma lógico, un ejemplo es PROLOG.
El paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk.
Nota: La representación orientada a objetos mejora la estructura de los datos y por lo tanto se ha aplicado a diferentes paradigmas como Redes de Petri, Imperativo Secuencial, Lógica de Predicados, Funcional, etc. No obstante, la manipulación no queda fundamentalmente afectada y por lo tanto el paradigma inicial tampoco a pesar de ser re-orientado a objetos.
Si bien puede seleccionarse la forma pura de estos paradigmas a la hora de programar, en la práctica es habitual que se mezclen, dando lugar a la programación multiparadigma.
Actualmente el paradigma de programación más usado debido a múltiples ventajas respecto a sus anteriores, es la programación orientada a objetos.
Lenguajes imperativos
Son los lenguajes que dan instrucciones a la computadora, es decir, órdenes.
Lenguajes Funcionales
Paradigma Funcional: este paradigma concibe a la computación como la evaluación de funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace hincapié en la aplicación de las funciones y composición entre ellas, más que en los cambios de estados y la ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones.


Lenguajes Lógicos
La computación lógica direcciona métodos de procesamiento basados en el razonamiento formal. Los objetos de tales razonamientos son "hechos" o reglas "if then". Para computar lógicamente se utiliza un conjunto de tales estamentos para calcular la verdad o falsedad de ese conjunto de estamentos. Un estamento es un hecho si sus tuplas verifican una serie de operaciones.
Un hecho es una expresión en la que algún objeto o conjunto de objetos satisface una relación específica. Una tupla es una lista inmutable. Una tupla no puede modificarse de ningún modo después de su creación.[1]
Un regla if then es un estamento que informa acerca de conjuntos de tuplas o estamentos relacionados que pueden predecir si otras tuplas satisfacerán otras relaciones.
Un estamento que es probado verdadero como resultado de un proceso se dice que es una inferencia del conjunto original. Se trata por tanto de una descripción de cómo obtener la veracidad de un estamento dado que unas reglas son verdaderas.
La computación lógica está por tanto relacionada con la automatización de algún conjunto de métodos de inferencia.
¿Qué es Java?

El lenguaje de programación Java, fue diseñado por la compañía Sun Microsystems Inc, con el propósito de crear un lenguaje que pudiera funcionar en redes computacionales heterogéneas ( redes de computadoras formadas por más de un tipo de computadora, ya sean PC, MAC's, estaciones de trabajo, etc.),y que fuera independiente de la plataforma en la que se vaya a ejecutar. Esto significa que un programa de Java puede ejecutarse en cualquier máquina o plataforma. El lenguaje fue diseñado con las siguientes características en mente:
· Simple. Elimina la complejidad de los lenguajes como "C" y da paso al contexto de los lenguajes modernos orientados a objetos. Orientado a Objetos. La filosofía de programación orientada a objetos es diferente a la programación convencional.
· Familiar. Como la mayoría de los programadores están acostumbrados a programar en C o en C++, el sintaxis de Java es muy similar al de estos.
· Robusto. El sistema de Java maneja la memoria de la computadora por ti. No te tienes que preocupar por apuntadores, memoria que no se esté utilizando, etc. Java realiza todo esto sin necesidad de que uno se lo indique.
· Seguro. El sistema de Java tiene ciertas políticas que evitan se puedan codificar virus con este lenguaje. Existen muchas restricciones, especialmente para los applets, que limitan lo que se puede y no puede hacer con los recursos críticos de una computadora.
· Portable. Como el código compilado de Java (conocido como byte code) es interpretado, un programa compilado de Java puede ser utilizado por cualquier computadora que tenga implementado el interprete de Java.
· Independiente a la arquitectura. Al compilar un programa en Java, el código resultante un tipo de código binario conocido como byte code. Este códido es interpretado por diferentes computadoras de igual manera, solamente hay que implementar un intérprete para cada plataforma. De esa manera Java logra ser un lenguaje que no depende de una arquitectura computacional definida.
· Multithreaded. Un lenguaje que soporta multiples threads es un lenguaje que puede ejecutar diferentes líneas de código al mismo tiempo.
· Interpretado. Java corre en máquina virtual, por lo tanto es interpretado.
· Dinámico. Java no requiere que compiles todas las clases de un programa para que este funcione. Si realizas una modificación a una clase Java se encarga de realizar un Dynamic Bynding o un Dynamic Loading para encontrar las clases.
Java puede funcionar como una aplicación sola o como un "applet", que es un pequeño programa hecho en Java. Los applets de Java se pueden "pegar" a una página de Web (HTML), y con esto puedes tener un programa que cualquier persona que tenga un browser compatible podrá usar.
Nota: Diferencia entre Java y CGI La diferencia es esencialmente simple, un CGI se ejecuta en el servidor mientras que un programa en Java se ejecuta en la máquina del usuario.
Java funciona de la siguiente manera: El compilador de Java deja el programa en un Pseudo-código (no es código maquinal) y luego el intérprete de Java ejecuta el programa (lo que se conoce como el "Java Virtual Machine"). Por eso Java es multiplataforma, existe un intérprete para cada máquina diferente. Nota: El código maquinal es el código binario que la computadora entiende y puede ejecutar.
Para entender bien como funciona un applet de Java vean el siguiente ejemplo:
1. Existe un código de Java en un servidor de Web. (Los códigos de Java se caracterizan por tener la extensión *.class).
2. Una persona en Internet, con un browser compatible con Java, realiza una conección al servidor.
3. El servidor envía el documento HTML y el código en Java (*.class).
4. En la computadora del usuario remoto llegan ambos, y la Máquina Virtual de Java, que está en el browser, transforma el código Java en un código que entienda la máquina local y se ejecuta el programa dentro de la página de Web.
5. Si el usuario realiza otra conexión a otro URL o se sale del browser, el programa se deja de ejecutar y en la computadora no queda rastro de el.


Programación orientada a objetos
La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.
Actualmente una de las áreas más candentes en la industria y en el ámbito académico es la orientación a objetos. La orientación a objetos promete mejoras de amplio alcance en la forma de diseño, desarrollo y mantenimiento del software ofreciendo una solución a largo plazo a los problemas y preocupaciones que han existido desde el comienzo en el desarrollo de software: la falta de portabilidad del código y reusabilidad, código que es dificil de modificar, ciclos de desarrollo largos y tecnicas de codificacion no intuituvas.
Un lenguaje orientado a objetos ataca estos problemas. Tiene tres características basicas: debe estar basado en objetos, basado en clases y capaz de tener herencia de clases. Muchos lenguajes cumplen uno o dos de estos puntos; muchos menos cumplen los tres. La barrera más difícil de sortear es usualmente la herencia.
El concepto de programación orientada a objetos (OOP) no es nuevo, lenguajes clásicos como SmallTalk se basan en ella. Dado que la OOP. se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolución del problema se realiza en términos de objetos, un lenguaje se dice que está basado en objetos si soporta objetos como una característica fundamental del mismo.
El elemento fundamental de la OOP es, como su nombre lo indica, el objeto. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización.
Esta definición especifica varias propiedades importantes de los objetos. En primer lugar, un objeto no es un dato simple, sino que contiene en su interior cierto número de componentes bién estructurados. En segundo lugar, cada objeto no es un ente aislado, sino que forma parte de una organización jerárquica o de otro tipo.

java

UNIVERSIDAD TECNOLÓGICA EQUINOCCIAL
Diego Ivan Moreno
2009-09-22
Programación II
Java Development Kit (JDK)
Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la creación de programas en java. Puede instalarse en una computadora local o en una unidad de red.
En la unidad de red se puede tener la aplicación distribuida en varias computadoras y trabajar como una sola aplicación.
JDK,SDK,J2SE
"Java Development Kit"(JDK),"Standard Development Kit" (SDK) y "Java 2 Standard Edition" (J2SE) son nombres para el mismo componente e incluyen: El API de Java, el JRE ( JVM ), compilador de Java y otras funcionalidades definidas por Sun. Si no esta familiarizado programando en Java, el API de Java es un conjunto de clases que es utilizado para generar programas básicos en el lenguaje; utilizando una analogía, estas clases tienen la misma funcionalidad que las funcionesclases estándar utilizadas en otros lenguajes C,C++, Perl (Esto es precisamente la definición de API ("Application Programming Interface")).
Partiendo de estas clases (API de Java) se generan TODOS los programas,interfaces y elementos programados en Java, inclusive a partir de estas clases usted puede definir otras clases especificas que serán utilizadas por su programa o producto. Una vez que defina sus programasclases en Java aún es necesario compilarlas para producir lo que es denominado byte-code o class files (este byte-code puede ser comparado con un binario) , y es este byte-code el que interpreta el JRE("Java Runtime Environment").Este byte-code es el que directamente ofrece la interoperabilidad de Java o el afamado "Write once run everywhere"="Escribalo una vez ejecutelo en todos lados".
Es una cantidad razonable de trabajo la que realiza el JDKSDK, y por el hecho de incluir tanto el compilador,API Java y el JRE existen diversas implementaciones de JDK: JDK's de Sun (o J2SE) y JDK's de IBM.

JDK en sistemas Windows En los sistemas Windows sus variables de entorno son
JAVAPATH: es un path completo del directorio donde esta instalado el JDK.
CLASSPATH: son las librerias o clases de usuario.
PATH: variable donde se agrega la ubicación de JDK
Los programas más importantes que se incluyen son:
Appletviewer: es un visor de applet para generar sus vistas previas,ya que un applet carece de método main y no se puede ejecutar con el programa java.
Javac:es el compilador de JAVA.
java: es el intérprete de JAVA.
javadoc: genera la documentación de las clases java de un programa.

Java Runtime Environment (JRE)
También conocido como JRE, es un conjunto de utilidades que permite la ejecución de programas java. Es un conjunto de herramientas, provisto por la empresa creadora del lenguaje JAVA, Sun Microsystems, para la ejecución del código.
Cuando navegamos por páginas que tienen agregados programados en JAVA, el navegador nos preguntará si queremos añadir el intérprete para este tipo de aplicaciones. Del mismo modo ocurre, cuando necesitamos ejecutar código JAVA escrito por nosotros mismos. Lo que necesitamos para ejecutar JAVA, es Java Runtime Environment (JRE).
Este paquete provee la máquina virtual de JAVA ó JVM, para que el código sea interpretado, independientemente del hardware del ordenador. Además, contiene todo el conjunto de APIs indispensables para que todo código JAVA pueda ejecutarse.

Componentes
En su forma más simple, el entorno en tiempo de ejecución de Java está conformado por una Máquina Virtual de Java o JVM, un conjunto de bibliotecas Java y otros componentes necesarios para que una aplicación escrita en lenguaje Java pueda ser ejecutada. El JRE actua como un "intermediario" entre el sistema operativo y Java.
La JVM es el programa que interpreta el código Java mientras que las librerías de clases estándar son las que implementan el API de Java. Ambas JVM y API deben ser consistentes entre sí, de ahí que sean distribuidas de modo conjunto.
Un usuario sólo necesita el JRE para ejecutar las aplicaciones desarrolladas en lenguaje Java, mientras que para desarrollar nuevas aplicaciones en dicho lenguaje es necesario un entorno de desarrollo, denominado JDK, que además del JRE (mínimo imprescindible) incluye, entre otros, un compilador para Java.
Es un conjunto de herramientas, provisto por la empresa creadora del lenguaje JAVA, Sun Microsystems, para la ejecución del código.
Cuando navegamos por páginas que tienen agregados programados en JAVA, el navegador nos preguntará si queremos añadir el intérprete para este tipo de aplicaciones. Del mismo modo ocurre, cuando necesitamos ejecutar código JAVA escrito por nosotros mismos. Lo que necesitamos para ejecutar JAVA, es Java Runtime Environment (JRE).
Este paquete provee la máquina virtual de JAVA ó JVM, para que el código sea interpretado, independientemente del hardware del ordenador. Además, contiene todo el conjunto de APIs indispensables para que todo código JAVA pueda ejecutarse.
Java Virtual Machine (JVM)
Una Máquina virtual Java (JVM) es un programa nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el Java bytecode), el cual es generado por el compilador del lenguaje Java.
El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel, viable incluso como lenguaje de entrada para un microprocesador físico. Como todas las piezas del rompecabezas Java, fue desarrollado originalmente por Sun Microsystems.
La JVM es una de las piezas fundamentales de la plataforma Java. Básicamente se sitúa en un nivel superior al Hardware del sistema sobre el que se pretende ejecutar la aplicación, y este actúa como un puente que entiende tanto el bytecode, como el sistema sobre el que se pretende ejecutar. Así, cuando se escribe una aplicación Java, se hace pensando que será ejecutada en una máquina virtual Java en concreto, siendo ésta la que en última instancia convierte de código bytecode a código nativo del dispositivo final.
La gran ventaja de la máquina virtual java es aportar portabilidad al lenguaje de manera que desde Sun Microsystems se han creado diferentes máquinas virtuales java para diferentes arquitecturas y así un programa .class escrito en un Windows puede ser interpretado en un entorno Linux. Tan solo es necesario disponer de dicha máquina virtual para dichos entornos. De ahí el famoso axioma que sigue a Java, "escríbelo una vez, ejecútalo en cualquier parte", o "Write once, run anywhere".
Empero, los intentos de la compañía propietaria de Java y productos derivados de construir microprocesadores que aceptaran el Java bytecode como su lenguaje de máquina fueron más bien infructuosos.
La máquina virtual de Java puede estar implementada en software, hardware, una herramienta de desarrollo o un Web browser; lee y ejecuta código precompilado bytecode que es independiente de la plataforma multiplataforma. La JVM provee definiciones para un conjunto de instrucciones, un conjunto de registros, un formato para archivos de clases, la pila, un heap con recolector de basura y un área de memoria. Cualquier implementación de la JVM que sea aprobada por SUN debe ser capaz de ejecutar cualquier clase que cumpla con la especificación.
Existen varias versiones, en orden cronológico, de la máquina virtual de Java. En general la definición del Java bytecode no cambia significativamente entre versiones, y si lo hacen, los desarrolladores del lenguaje procuran que exista compatibilidad hacia atrás con los productos anteriores.
A partir de J2SE 5.0, los cambios en la especificación de la JVM han sido desarrollados bajo el auspicio de la Java Community Process (JCP) y especificada en la JSR 924.[1] Desde el año 2006, cambios en la especificación para soportar las modificaciones del formato del fichero de clases (JSR 202[2] ) se están llevando a cabo en una versión de mantenimiendo en la JSR 924. Las especificaciones para la JVM están publicadas en lo que se conoce como "el libro azul".[3] Así reza el prefacio: Esperamos que esta especificación documente suficientemente la Máquina Virtual de Java para hacer posibles implementaciones desde cero. Sun proporciona tests que verifican que las implementaciones de la Máquina Virtual de Java opere correctamente
Kaffe es un ejemplo de una implementación de JVM desde cero. Sun es la propietaria de la marca registrada "Java", que usa para certificar aquellas implementaciones que se ajustan y son totalmente compatibles con sus especificaciones.
Entorno de ejecución
Para poder ejecutar una aplicación en una Máquina Virtual de Java, el programa código debe compilarse de acuerdo a un formato binario portable estandarizado, normalmente en forma de ficheros con extensión .class. Un programa puede componerse de múltiples clases, en cuyo caso cada clase tendrá asociada su propio archivo .class. Para facilitar la distribución de aplicaciones, los archivos de clase pueden empaquetarse juntos en un archivo con formato jar. Esta idea apareció en la época de los primeros applets de Java. Estas aplicaciones pueden descargar aquellos archivos de clase que necesitan en tiempo de ejecución, lo que suponía una sobrecarga considerable para la red en una época donde la velocidad suponía un problema. El empaquetado evita la sobrecarga por la continua apertura y cierre de conexiones para cada uno de los fragmentos necesarios.
El código resultante de la compilación es ejecutado por la JVM que lleva a cabo la emulación del conjunto de instrucciones, bien por un proceso de interpretación o más habitualmente mediante un compilador JIT (Just In Time), como el HotSpot de Sun. Esta última opción convierte el bytecode a código nativo de la plataforma destino, lo que permite una ejecución mucho más rápida. El inconveniente es el tiempo necesario al principio para la compilación.
En un sentido amplio, la Máquina Virtual de Java actúa como un puente entre el resultado de la compilación (el bytecode) y el sistema sobre el que se ejecuta la aplicación. Para cada dispositivo debe haber una JVM específica, ya sea un teléfono móvil, un PC con Windows XP, o un microondas. En cualquier caso, cada máquina virtual conoce el conjunto de instrucciones de la plataforma destino, y traduce un código escrito en lenguaje Java (común para todas) al código nativo que es capaz de entender el Hardware de la plataforma.
El verificador del bytecode
La JVM verifica todo bytecode antes de ejecutarlo. Esto significa que solo una cantidad limitada de secuencias de bytecode forman programas válidos, por ejemplo una instrucción JUMP (branch) puede apuntar solo a una instrucción dentro de la misma función. A causa de esto, el hecho de que JVM es una arquitectura de pila no implica una carga en la velocidad para emulación sobre arquitecturas basadas en registros cuando usamos un compilador JIT: no hay diferencia para un compilador JIT si nombra registros con nombres imaginarios o posiciones de pila imaginarias que necesitan ser ubicadas a los registros de la arquitectura objetivo. De hecho, la verificación de código hace a la JVM diferente de una arquitectura clásica de pila cuya emulación eficiente con un compilador JIT es más complicada y típicamente realizado por un interprete más lento.
La verificación de código también asegura que los patrones de bits arbitrarios no pueden usarse como direcciones. La Protección de Memoria se consigue sin necesidad de una unidad de Gestión de Memoria(MMU). Así, JVM es una forma eficiente de obtener protección de memoria en chips que no tienen MMU.
Bytecodes
La JVM tiene instrucciones para los siguientes grupos de tareas
Carga y Almacenamiento
Aritméticas
Conversión de tipos
Creación y manipulación de objetos
Gestión de pilas (push / pop)
Transferencias de Control (branching)
Invocación y retorno a Métodos
Lanzar excepciones
La clave es la compatibilidad binaria. Cada sistema operativo de un host particular necesita su propia implementación de JVM y runtime. Estas JVMs interpretan el byte code semánticamente de la misma manera, pero la implementación actual puede variar. Más complicado que solo la emulación de bytecode es la implementación compatible y eficiente de las APIs java las cuales tienen que ser mapeadas para cada sistema operativo de host.
Extensión segura de código remoto
Una arquitectura de maquina virtual permite control de granuralidad fina sobre las acciones que el código puede hacer dentro de la máquina. Esto está diseñado para permitir ejecución segura de código no confiable desde fuentes remotas, un modelo usado muy famoso son las Java applets. Applets se ejecutan dentro de una VM incorporada en el navegador del usuario, ejecutando código descargado desde un servidor HTTP remoto. El código remoto se ejecuta en una "sandbox" altamente restringida, la cual está diseñada para proteger al usuario de código erróneo o malicioso. Los Publicadores con recursos financieros suficientes pueden conseguir un certificado con el cual hacer applets con firma digital que las caractericen como seguras("safe"), dandoles entonces permisos para salir de la sandbox y acceder al sistema de ficheros local y sistema de red, presumiblemente bajo el control del usuario.
Implementaciones de la máquina virtual
La edición J2SE tiene dos implementaciones de la máquina virtual:
Java HotSpot Client VM: La máquina virtual por defecto, preparada para obtener el máximo rendimiento en la ejecución de aplicaciones en el entorno cliente, por ejemplo, reduciendo al máximo el tiempo de inicio de una aplicación Java.
Java HotSpot Server VM: Preparada para obtener el máximo rendimiento en la ejecución de aplicaciones en el entorno de los servidores.