viernes, 4 de marzo de 2011

INTRODUCCIÓN A JAVA


ORIGEN DE JAVA

Sun Microsystems, líder en servidores para Internet, uno de cuyos lemas desde hace mucho tiempo ha sido "the netwokr is the computer", es quien ha inventado el lenguaje Java, en un intento de resolver simultáneamente todos los problemas que se planteaban a los desarrolladores de software por la proliferación de arquitecturas incompatibles, tanto entre las diferentes máquinas como entre los diversos sistemas operativos y sistemas de ventanas que funcionan sobre una misma máquina, añadiendo la dificultad de crear aplicaciones distribuidas en una red como Internet.

Yo he conocido, varias versiones distintas sobre el origen, concepción y desarrollo de Java.

Sun Microsystems decidió intentar introducirse en el mercado de la electrónica de consumo y desarrollar programas para pequeños dispositivos electrónicos. Tras unos comienzos dudosos, Sun decidío crear una filial, denominada FirstPerson Inc., para dar margen de maniobra al equipo responsable del proyecto.

El mercado inicialmente prevsito para los programas de FirstPerson eran los equipos domésticos: microondas, tostadoras y, fundamentalmente, televisión interactiva. Este mercado, dada la falta de sofisticación de los usuarios, requería unas interfaces mucho más cómodas e intuitivas que los sistemas de ventanas que proliferaban en el momento.

James Gosling, el miembro del equipo con más experiencia en lenguajes de programación, decidió que las ventajas de eficiencia de C++ no compensaban el gran coste de pruebas y depuración. Los lenguajes como C o C++, deben ser compilados para un chip, y si se cambia el chip, todo el software debe compilarse de nuevo. Esto supone un gran problema ya que encarece mucho los desarrollos y el problema es especialmente acusado en el campo de la electrónica de consumo La aparición de un chip más barato y, generalmente, más eficiente, conduce inmediatamente a los fabricantes a incluirlo en las nuevas series de sus cadenas de producción, por pequeña que se la diferencia en precio, ya que, multiplicada por la tirada masiva de los aparatos, supone un ahorro considerable

Gosling había estado trabajando en su tiempo libre en un lenguaje de programación que él había llamado Oak, según parece el nombre se debe al roble que se veía por la ventana de su casa.

El primer proyecto en el que se aplicó este lenguaje recibió el nombr de proyecto Green y consistía en un sistema de control completo de los aparatos electrónicos y el entorno de un hogar. Se construyó un ordenador experimental denominado *7 (Star Seven). El sistema presentaba una interfaz basada en la representación de la casa de forma animada y el control se llevaba a cabo mediante una pantalla sensible al tacto. En el sistema aparecía Duke, la actual mascota de Java. Posteriormente se aplicó a otro proyecto denominado VOD (Video On Demand) en el que se empleaba como interfaz la televisión interactiva. Ninguno de estos proyectos se convirtió nunca en un sistema comercial, pero fueron desarrollados enteramente en un Java primitivo.

Una vez que en Sun se dieron cuenta de que a corto plazo la televisión interactiva no iba a ser un gran éxito, urgieron a FirstPerson a desarrollar con rapidez nuevas estrategias que produjeran beneficios. No lo consiguieron y FirstPerson cerró en la primavera de 1994.

Pese a lo que parecía ya un olvido definitivo, Bill Joy, cofundador de Sun y uno de los desarrolladores principales del Unix de Berkeley, juzgó que Internet podría llegar a ser el campo de juego adecuado para disputar a Microsoft su primacía casi absoluta en el terreno del software, y vio en Oak el instrumento idóneo para llevar a cabo estos planes.

CRONOLOGIA

En 1994 eclosionó el fenómeno web y Oak fue rebautizado como Java. El lenguaje Java fue presentado en sociedad en agosto de 1995. En unmomento de inspiración, sus creadores decidieron utilizar el lenguaje para desarrollar un browser al que se llamó WebRunner, que fue ensayado con éxito, arrancando en ese momento el proyecto Java/HotJava. HotJava fue un browser totalmente programado en Java y capaz así mismo de ejecutar código Java.

A lo largo de 1995 tanto Java, su documentación y su código fuente como HotJava
pudieron obtenerse para múltiples plataformas al tiempo que se introducía soporte para Java
en la versión 2.0 del navegador Netscape.

La versión beta 1 de Java despertó un inusitado interés y se empezó a trabajar para
que Java fuera portable a todos los sistemas operativos existentes.

En diciembre de 1995 cuando se dio a conocer la versión beta 2 de Java y Microsoft e
IBM dieron a conocer su intención de solicitar licencia para aplicar la tecnología Java, su
éxito fue ya inevitable.

El 23 de enero 1996 se publicó oficialmente la versión Java 1.0 que ya se podía
obtener descargándola de la web.

A principios de 1997 aparece la versión 1.1 mejorando mucho la primera versión.
Java 1.2 (Java 2) apareció a finales de 1998 incorporando nuevos elementos. Según
Sun esta era la primera versión realmente profesional. El nombre de Java se rebautizó añadiendole el número 2 (Java 2). Las versiones siguieron nombrándose como Java2 1.x.

En mayo del 2000 se lanza la versión 1.3 del J2SE (Java 2 Standar Edition) y en febrero de 2002, se lanzó la versión 1.4 (la versión 1.4.1 es ya una beta).


J2SE 1.4 (6 de febrero de 2002) Se lanza J2SE 1.4. Este fue el primer lanzamiento de la plataforma Java desarrollado bajo el Proceso de la Comunidad Java como JSR 59.

J2SE 5.0 (30 de septiembre de 2004) - Nombre clave: Tiger. (Originalmente numerado 1.5, esta notación aún es usada internamente.[4]) Desarrollado bajo JSR 176, Tiger añadió un número significativo de nuevas características comunicado de prensa. Plantillas (genéricos) - provee conversion de tipos (type safety) en tiempo de compilación para colecciones y elimina la necesidad de la mayoría de conversion de tipos (type casting). (Especificado por JSR 14.)



Gracias a sus posibilidades para usarse en Internet. Actualmente Java no es sólo un lenguaje sino toda una plataforma que, en la práctica, abarca todos los segmentos posibles: desde la creación de pequeñas animaciones para páginas web hasta grandes aplicaciones distribuidas con acceso a bases de datos, pasando por componentes discretos, aplicaciones gráficas, etc.

Java es el primer lenguaje que tiene la virtud de ser compilado e interpretado de forma simultánea. Cuando un programador realiza una aplicación o un applet en Java y lo compila, en realidad, el compilador no trabaja como un compilador de un lenguaje al uso. El compilador Java únicamente genera el denominado ByteCode. Este código es un código intermedio entre el lenguaje máquina del procesador y Java. Este código no es ejecutable por sí mismo en ninguna plataforma hardware, pues no se corresponde con el lenguaje de ninguno de los procesadores que actualmente se conocen (habrá que esperar a ver qué ocurre con los procesadores Java).

Para ejecutar una aplicación Java es necesario disponer de un mecanismo que permita ejecutar el ByteCode. Este mecanismo es la denominada Máquina Virtual Java (JVM). En cada plataforma (Solaris, Linux, Windows, HP-UX, MacOS, etc) existe una Máquina virtual específica.

Cuando el ByteCode llega a la máquina virtual, ésta lo interpreta pasándolo a código máquina del procesador donde se esté trabajando, así como ejecutando las intrucciones en lenguaje máquina que se deriven de la aplicación Java. Cuando el mismo ByteCode llega a diferentes plataformas, éste se ejecutará de forma correcta, pues en cada una de esas plataformas existirá la máquina virtual adecuada. Con este mecanismo se consigue la famosa multiplataforma de Java, en la que con sólo codificar una vez, podemos ejecutar en varias plataformas.

La Máquina Virtual Java (JVM) desempeña otras funciones, como la de aislar los programas Java al entorno de la JVM, consiguiendo una gran seguridad.

Esto tiene algunas desventajas, y la más clara es la velocidad de ejecución. Puesto que la JVM debe estar interpretando constantemente el ByteCode, se consume demasiado tiempo de procesador en realizar esta interpretación, que por otra parte no aporta nada a la aplicación, obteniendo así un bajo rendimiento. Para solucionarlo se han adoptado soluciones intermedias. Una de las más novedosas y útiles son los compiladores JIT (Just-In-Time). Estos compiladores están situados a la entrada de la JVM, de forma que según llega el ByteCode lo van compilando al lenguaje máquina del procesador. A diferencia de la interpretación, el compilador no ejecuta el BytCode, únicamente lo traduce y lo almacena en código nativo dentro de la JVM. Así, una vez que la aplicación está dentro de la JVM, ya se encuentra en lenguaje máquina y, por lo tanto, será directamente ejecutable, sin necesidad de interpretaciones, consiguiendo dotar de mayores rendimientos a la aplicación.

Todas las mejoras al lenguaje se centran básicamente en conseguir mejores tiempos de ejecución y dotar de mayores prestaciones a la Máquina virutal Java.

APIS DE LA PLATAFORMA JAVA

No hay mejor información que la descripción de los APIs que componen la plataforma Java para hacerse una idea de todo lo que se mueve alrededor. Aunque no todas las que aquí se citan están disponibles para su uso, ya que algunas se encuentran en fase de desarrollo, otras en fase de discusión pública para aporte de ideas y otras en fase beta.

JavaEnterprise: Conjunto de especificaciones para entornos corporativos
  • JDBC API Java Database Connectivity, para permitir a aplicaciones o applets acceder a bases de datos de forma homogénea vía consultas SQL
  • Java RMI Remote Method Invocation, inovación remota de métodos para aplicaciones distribuidas.
  • Java IDL Puente de compatibilidad con el modelo estándar de objetos CORBa
  • JNDI Java Naming and Directory Interface, proporciona servicios de directorios y localización de recursos en un entorno corporativo
JavaBeans: Especificación de componentes basados en Java

  • JAF JavaBeans Activation Framework, entorno para determinar el tipo de datos, encapsular el acceso a ellos, descubrir las acciones que se les puede aplicar e instanciar el componente JavaBean adecuado
Java Security API: API para componentes que necesitan encriptación, certificación, firmas digitales y autentificación.

JFC: Java Foundation Classes, jerarquía de clases para el desarrollo de aplicaciones gráficas e interfaces de usuario

  • Swint Set Conjunto de pequeños componentes gráficos para aplicaciones: botones, pestañas, etc.
  • Java 2D Extensión del AWT para el tratamiento de información gráfica bidimensional
Java Servlet API: Especificación que permite crear applets que se ejecutan en el servidor

Java Server API: API para el intercambio de información entre un servidor Web y aplicaciones que se ejecutan en su entorno.

Java Commerce API: API para transacciones comerciales en Internet

Java Media API: Conjunto de especificaciones para el acceso y utilización de información interactiva
  • JMF Java Media Framework, conjunto de especificaciones para la arquitectura, protocolos e interfaces de programación para reproductores multimedia, captura y videoconferencia.
  • Java Collaboration Especificación para la comunicación interactiva bidireccional
  • Java Telephony Especificación para aplicaciones de telefonía
  • Java Speech Especificación para el reconocimiento y síntesis de voz
  • Java Animation Especificación para la manipulación y movimiento de objetos bidimensionales
  • Java 3D Especificación para la manipulación de objetos tridimensionales
Java Management API: Especificación para la gestión remota de redes

JavaMail API: Especificación para proporcionar un conjunto de clases abstractas que modelice un sistema de correo

Personal Java: Especificaciones para aparatos electrónicos de consumo conectables a redes, incluyendo televisores, teléfonos inteligentes, videoconsolas, etc

Java Smart Card: Especificaciones para tarjetas inteligentes, tipo tarjeta de crédito.

Embedded Java: Especificaciones para dispositivos electrónicos industriales con software embebido ejecutándose sobre sistemas operativos en tiempo real, incluyendo dispositivos de instrumentación, electrónica de procesos, etc.


EL PAQUETE DE DESARROLLO DE JAVA

Cualquier programador que desee usar el lenguaje puede hacerlo adquiriendo lo que se conoce como JDK (Java Development Kit), un paquete de desarrollo compuesto por el compilador Java, las librerías estándar, documentación, ejemplos y el llamodo JRE (Java Runtime Environment) o entorno de ejecución de Java.

La última versión del JDK es la 1.3 y se conoce como Java 2 Platform 1.3. Puede obtenerla para sus sistema operativo dela URL http://java.sun.com/products/j2se/1.3. En la misma dirección se encuentra el paquete de documentación de la plataforma estándar de Java.

Actualmente existen varias ediciones de la plataforma Java 2. La indicada en el enlace anterior es la conocida como estándar o J2SE (Java 2 Standard Edition), en la cual se incluyen los elementos necesarios para crear applets y aplicaciones Java corrientes. Existen otras ediciones, como la J2EE (Java 2 Enterprise Edition) y J2ME (Java Micro Edition). La primera de ellas está dirigida, como su propio nombre indica, a las empresas, facilitando elementos como los EJB (Enterprise Java Beans) y los servicios necesarios para diseñar aplicaciones distribuidas. La J2ME es una versión reducida para dispositivos móviles, como los Palm.

PAQUETES. PAQUETES JAVA

En Java las clases se almacenan, para su posterior reutilización, en el interior de paquetes.

La plataforma Java dispone de una serie de paquetes predefinidos como los que hemos usado en los ejemplos anteriores. En el paquete javax.swing, por ejemplo, se encuentran las clases relacionadas con interfaces de usario.

Aparte de los que podemos crear nosotros mismos, con finalidades específicas para nuestra actividad, la plataforma Java incluye infinidad de paquetes con clases multipropósito. Con ellas es posible crear interfaces de usuario, generar gráficos 2D y 3D, trabajar con audio, conectividad a redes, bases de datos, generar applets, etc.

Las clases de utilidad que forman parte del núcleo de Java se encuentran en paquetes cuyo nomb re empieza siempre con java. Entre éstos están java.math, java.lang o java.applet. Existen paquetes de extensiones a Java, cuyo nombre se inicia con javax. A éstos hay que añadir los creados por empresas, que suelen comenzar por com. y el nombre de la empresa o directamente el nombre de la empresa.

3 EJEMPLOS RAPIDOS

Veamos cómo crear un programa muy simple. Éste tan sólo deberá mostrar una cadena de caracteres.

  • 1 Ejemplo:

class HolaMundo {

public static void main (String[] args) {
System.out.println("Hola mundo");
}
}
  • 2 Ejemplo:
El ejemplo anterior funciona en una consola de texto, como las ofrecidas por Linux y Windows, y no dispone de una interfaz gráfica de usuario, como pueda ser una ventana. La plataforma Java cuenta con los objetos necesarios para crear una ventana y establecer sus propiedades, con independencia de que dicha ventana vaya a mostrarse en Windows, Linux, Solaris o Mac OS.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.UIManager;

class HolaMundoFrm extends JFrame {

public HolaMundoFrm() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);

this.setSize(new Dimension(400, 300));
this.setTitle("Hola mundo");
}

protected void processWindowEvent(WindowsEvent e){
super.processWindowEvent(e);
if(e.getID() == WindowEvent.WINDOW_CLOSING){
System.exit(0);
}
}
}

public class HolaMundoGrafico {

public HolaMundoGrafico(){
HolaMundoFrm frame = new HolaMundoFrm();

frame.setVisible(true);
}
public static void main (String[] args) {
new HolaMundoGrafico();
}
}

Observe que existe no una clase sino dos. La primera gestiona la ventana, estableciendo su título, dimensiones y un gestor para eventos que, en este caso concreto, tan sólo responde al cierre. La segunda clase es la aplicación, cuyo constructor crea una ventana y la muestra. El método main() se limita a crear un objeto de la clase aplicación.
  • 3 Ejemplo
APPLET. ¿QUE ES UN APPLET?

Un applet es un programa escrito en Java que se ejecuta en el interior de un cliente web, como Internet Explorer o Netscape Navigator

Como cualquier otro lenguaje, Java se usa para crear aplicaciones pero, además, tiene la particularidad especial de poder crear aplicaciones muy especiales, son los applets, que es una mini (let) aplicación (app) diseñada para ejecutarse en un navegador.
Ahora no se utiliza la salida por consola sino un método del objeto Graphics. Observe la sintaxis usada para indicar que HolaMundoapllet deriva de Applet.

import java.applet.Applet;
import java.awt.Graphics;

public class HolaMundoApplet extends Applet {
public void paint (Graphics g) {
g.drawString("Hola mundo", 100, 100);
}
}

La compilación de este applet se efectúa como la de cualquier otro programa, siendo el resultado un archivo de clase con byte code. Éste, no obstante, no será ejecutado directamente sino referencia desde un documento HTML.

html
body
Aquí esta el applet:
applet
code="HolaMundoApplet.class"
width=240 height=120
applet
body
html
--------------------------------------------------------------------------------------------------
Introducción a la programación . Francisco Charte Ojeda. Anaya
JAVA 2: Manual de usuario y tutorial, 2.ª edición. Agustin Froute
--------------------------------------------------------------------------------------------------

ESQUEMA DE FUNCIONAMIENTO. METODOS REMOTOS.

La comunicación entre aplicaciones que se ejecutan de manera distribuida, en sistemas comunicados a través de algún tipo de red, no es nada nuevo y existen desde hace décadas mecanismos tales como CORBA (Common Object Request Broker Architecture), DCOM (Distributed Component Object Model) o Java RMI (Remote Method Invocation). Todos ellos se caracterizan por usar canales de comunicación a medida, lo cual no planteaba ningún problema en entornos cerrados como las redes locales de empresas y organismos, habituales antes de la difusión de Internet en estos ámbitos.

Los problemas de seguridad que plantea tener conectadas esas redes internas, antes cerradas, a Internet, para aprovechar los recursos de ésta, ha hecho necesario el uso de dispositivos como los cortafuegos, que impiden las intrusiones pero, al tiempo, dificultan la comunicación a través de esos canales específicos que citaba antes. La búsqueda de alternativas produjo como fruto la aparición de un nuevo abanico de soluciones basadas todas ellas en XML, un estándar abierto y con amplia difusión, y la pila de protocolos TCP/IP y HTTP, usados en la Web desde su nacimiento.

Un servicio Web es una aplicación que se ejecuta en un servidor, como puede hacerlo una página PHP o bien un CGI, pero que atiende a solicitudes que tienen la forma de mensajes SOAP. Este protocolo permite a los clientes indicar la función que quieren invocar, facilitando los parámetros asociados, y al propio servicio devolver la respuesta adecuada. Un mensaje SOAP es un documento XML con una serie de elementos predefinidos.

Para que los clientes puedan consumir un servicio Web antes tienen que localizar y, a continuación, conocer las funciones que expone: sus nombres, argumentos, etc. Ésta es la finalidad de los directorios UDDI y el lenguaje WSDL.

SERVICIOS WEBS BASADOS EN SOAP

SOAP se ha convertido en un protocolo ubicuo para intercambiar información en Internet. SOAP es un medio por el cual se pueden invocar procedimientos o métodos remotos como si fueran locales.

Cuando se invoca un método SOAP, está solicitando que una aplicación realice cierto cálculo y devuelva un resultado a su programa. Éste es el mimo concepto que una llamada a un método local; simplemente utilizando SOAP se pueden transportar sobre una serie de mecanismos, aunque este capítulo examinará solamente el uso de SOAP sobre HTTP.

SOAP proporciona un buen medio para obtener información de una fuente de datos. En una petición SOAP, proporciona parámetros según requiere la aplicación receptora. Estos parámetros se utilizan luego por el servidor, que ejecuta la consulta en el origen de datos de la aplicación en nombre del cliente y devuelve valores al cliente en una respuesta SOAP.

Esta información se puede analizar y utilizar dentro de la aplicación local.

VISION DE CONJUNTO DE SOAP

SOAP (Simple Object Access Protocol, Procolo Simple de Acceso a Objetos, a veces también referido como Service-Oriented Access Protocol o Service-Oriented Architecture Protocol), es un protocolo definido por el W3 Consortium.

SOAP es un formato cliente/servidor, con uno enviando el mensaje y el otro analizando el contenido XML del mensaje. La aplicación actúa basándose en los resultados del mensaje tanto del receptor como del emisor, o ambos.

SOAP es un formato XML con tres elementos: envolvente, encabezado y cuerpo

Cuando se conecta a un servicio Web, necesita saber la dirección del servicio, incluida la información de transporte. Puesto que SOAP se puede transportar sobre muchos protocolos diferentes (HTTP y otros protocolos), la información de dirección no solamente muestra dónde reside el servicio Web, sino cómo comunicarse con él. Además de la información de dirección, el espacio de nombres del servicio Web también se debe incluir. El espacio de nombres se utiliza para localizar aúnmás el servicio Web en el propio servidor. Por último, el método o función a invocar en el servidor remoto, junto con cualquier otro parámetro según los necesita la aplicación receptora.

Los parámetros requeridos por cualquier servicio SOAP se definen normalmente en el documento de defincion del servico conocido como el Lenguaje de Descripciñon de Servicios WEB (Web Service Definition Language o WSDL). El WSDL describe las interfaces para unservicio Web dado.

SOAP se ha hecho muy popular porque se ha creado para utilizar protocolos muy conocidos como HTTP y XML. Varios sitios Web populares tienen disponibles interfaces SOAP.

Amazon.com-National Weather Service-Google

COMUNICACIÓN DISTRIBUIDA. COMUNICACIÓN A TRAVÉS DE SOCKETS.

En este capítulo se muestra cómo realizar aplicaciones que, funcionando en una red de ordenadores local o en Internet, utilizan conexiones a través de sockets.

CONCEPTO DE SOCKET

En el capítulo anterior se ha visto cómo una aplicación cliente accedía a una aplicación servidora utilizando el acceso remoto a métodos (RMI)

En este capítulo se muestra otra alternativa para realizar la comunicación entre dos ordenadores, a través de vínculos de comunicación conocidos por la denominación genérica de sockets. Tanto los clientes como los servidores atienden peticiones de otros, en un puerto determinado del ordenador, si se recibe la petición de establecer una conexión y esta conexión es aceptada, se establece un intercambio de datos a través del protocolo TCP (Protocolo de control de transporte), se dice entonces que se han creado dos sockets, es decir, dos puntos de comunicación en la red.
Cada sockete se identifica por la dirección IP del ordenador en el que atiende a demandas de comunicación de otros y a un número de puerto.
Este tipo de comunicación conocida como comunicación a través de conexión, es más fiable qeu otra en la que no quede establecida esta conexión, ya que TCP proporciona un conjunto de mensajes de reconocimiento de ambos sockets, así como servicios de detección y recuperación de errores.

La red de redes que es Internet utiliza mayoritariamente sockets pra la comunicación entre ordenadores.

La librería java.net ofrece varias clases, que permiten la comunicación entre un cliente y un servidor, basándose en conexiones a través de sockets.

lunes, 21 de febrero de 2011

MANEJADORES DE SENTENCIAS

Igual que los manejadores de base de datos se crean desde el DBI, los manejadores de sentencia son hijos de un manejador de base de datos. Como su propio nombre implica, los manejadores de sentencia se utilizan para sentencias individuales tales como SELECT, INSERT, UPDATE, DELETE, etc., para ejecutarse en el servidor de base de datos. Se pueden definir múltiples manejadores de sentencia (y normalmente se hace) basándose en un manejador de base de datos dentro de un programa dado.

Los manejadores de sentencia se crean por sentencias. Esto significa que si tiene múltiples sentencias a ejecutar contra un manejador de base de datos dado, necesitará múltiples manejadores de sentencia. Sin embargo, puede reutilizar un manejador de sentencia si la sentencia se tiene que volver a ejecutar contra una base de datos. De hecho, puede utilizar parámetros para ejecutar la misma sentencia pero con diferentes valores, como se explica más adelante en este capítulo.

Los manejadores de sentencia no son siempre necesarios para enviar sentencias a la base de datos. Los manejadores de sentencia son necesarios cuando necesita recuperar o ir a buscar información de la base de datos. Sin embargo, las sentencias también se pueden ejecutar directamente contra la base de datos por medio del método do() del manejador de base de datos, según se explica más adelante en este capítulo.

Como se ha indicado anteriormente, se crea un manejador de sentencia desde el manejador de base de datos. En términos prácticos, esto significa que crea una variable, comúnmente denominada $sth para albergar el objeto de manejador de sentencia. El método prepare() de la variable del manejador de sentencia se invoca en el manejador de base de datos. Aquí tiene un ejemplo:

my $sth = $dbh->prepare("SELECT user, host FROM mysql.user");

Por sí mismo, el manejador de sentencia creado en el ejemplo de código puede no hacer nada. Para algunos tipos de base de datos, incluido MySQL la interacción con la base de datos todavía no ha tendio lugar. En su lugar, el DBI solamente ha preparado la sentencia para ejecutarse más adelante.

Esta llamada del método prepare() se utiliza para activar la parametrización de la sentencia antes de ejecutar la sentencia más adelante. La sentencia no se ejecutará contra la base de datos hasta que se invoque el método execute() en el manejador de sentencia, $sth:

$sth->execute();

En este punto, la sentencia, en este caso, una sentencia SELECT, se ha ejecutado contra la base de datos aunque no se ha recuperado níngún resultado.

Nota: Algunas bases de datos analizarán la sentencia cuando invoque prepare() y de esta manera puede devolver errores si el servidor encuentra problemas mientras trata de analizar la sentencia SQL dada en el método prepare(). Consulte la documentación para el driver de base de datos para determinar si las sentencias se analizan en el momento de invocar prepare().

MANEJADORES DE BASE DE DATOS

Como se ha indicado anteriormente, el proceso de conectar con una base de datos está generalizado entre las bases de datos, aunque existen ciertas consideraciones para tipos específicos de base de datos. Conectar con una base de datos crea un objeto de manejador de base de datos que se utiliza como un punto para crear manejadores de sentencias e interactuar con el servidor de base de datos.

Los manejadores de base de datos representan una conexión con la base de datos, y puede tener múltiples conexiones con múltiples (o la misma) bases de datos al definir múltiples manejadores de base de datos. Los manejadores de base de datos se escriben normalmente en código como $dbh.

La creación de un manejador de base de datos por medio del DBI requiere un DSN. La mayoría de las bases de datos en la actualidad son multiusuario, lo que significa que credenciales como un nombre de usuario y contraseña son también obligatorias para conectar con la base de datos y crear un manejador de base de datos. Es una buena práctica conectar con la base de datos tan pocas veces como sea posible (normalmente una) dentro de un programa, en lugar de conectarse y desconectarse para cada sentencia o consulta.

El método DBI connect() conecta con la base de datos y devuelve el manejador de base de datos:

Nota: Aunque frecuentemente verá los manejadores de base de datos escritos como $dbh, no hay ninguna razón para que no se puedan llamar con cualquier otro nombre válido de variable. El $dbh es una convención antingua y la utilizaré en este libro para hacer referencia a un manejador de base de datos.

INTERACTUAR CON UN BASE DE DATOS. DRIVERS DE BASE DE DATOS (DBD).

Un driver de base de datos proporciona los métodos de interacción de base de datos que son específicos a la implementación individual de base de datos. Se conoce comúnmente como el DBD, por dependiente de base de datos, ya que su código depende de la base de datos que se utilice.
Por ejemplo, una base de datos MySQL tiene sintaxis diferente que una base de datos Oracle. El DBI opera independientemente de la base de datos, dejando el código específico de la implementación al DBD.

Algunos de los DBD más populares son los siguientes.
  • MySQL: Es una parte de la plataforma de desarrollo LAMP (Linux-Apache-MySQL-Perl) que es tan popular en todo el mundo.
  • PostgreSQL: Otra base de datos popular de código abierto es PostgreSQL. El DBD para PostgreSQL es similar al de MySQL.
  • ODBC: El DBD de ODBC se utiliza comúnmente para conectar con bases de datos que se ejecutan en sistemas Windows, como Microsoft SQL Server y Microsoft Access, pero el driver ODBC se puede utilizar para conectar con casi cualquier base de datos que ofrezca conectividad ODBC.
  • Sybase: Otro popular DBD se utiliza con el servidor de base de datos Sybase. Este servidor y el DBD para él no se tratarán en este libro.

BASES DE DATOS Y LENGUAJES DE PROGRAMACIÓN

Las bases de datos son vitales para innumerables aplicaciones y desempeñan un papel importante en llevar aplicaciones a la Web. Este blog examina los elementos implicados en conectar con bases de datos relacionales utilizando distintos lenguajes.