Ahora que ha aprendido un poco sobre la escritura de aplicaciones Java, puede que se esté preguntando cómo empaquetarlas para que otros desarrolladores puedan usarlas o cómo importar códigos de otros desarrolladores en sus aplicaciones. Esta sección le muestra cómo.
El JDK se envía con una herramienta llamada JAR, que significa Java Archive (archivo Java). Use esta herramienta para crear archivos JAR. Una vez que haya empaquetado su código en un archivo JAR, otros desarrolladores pueden simplemente dejar el archivo JAR en sus proyectos y configurar sus proyectos para usar su código.
Crear un archivo JAR en Eclipse es facilísimo. En su espacio de trabajo, haga clic derecho en el paquete com.makotogroup.intro
y seleccione Export. Verá el diálogo que se muestra en la Ilustración 8. Elija Java > JAR file.
Ilustración 8. Recuadro de diálogo de exportación.
Cuando se abra el siguiente recuadro de diálogo, navegue hasta la ubicación donde quiere almacenar su archivo JAR y coloque el nombre que quiera al archivo. La extensión .jar es la predeterminada, que recomiendo usar. Haga clic en Finish.
Verá su archivo JAR en la ubicación que seleccionó. Puede usar las clases en él desde su código si lo pone en su ruta de desarrollo en Eclipse. Hacer eso es facilísimo también, como verá a continuación.
Uso de aplicaciones de terceros
Mientras usted se siente más y más cómodo al escribir aplicaciones Java, querrá usar más y más aplicaciones de terceros para soportar su código. A modo de ejemplo, digamos que usted quiere usar joda-time
, una biblioteca de sustitución JDK para hacer manejo de fecha/tiempo, manipulaciones y cálculos.
Supongamos que ya ha descargado joda-time
, que se almacena en un archivo JAR. Para usar las clases, su primer paso es crear un directorio lib en su proyecto y dejar el archivo JAR en él:
La carpeta nueva aparece al mismo nivel que src
. Ahora copie el archivo .jarjoda-time
en su nuevo directorio lib
. Para este ejemplo, el archivo se llamajoda-time-1.6.jar
. (Al nombrar un archivo JAR es común incluir el número de la versión).
Ahora todo lo que necesita hacer es comunicarle a Eclipse que incluya las clases del archivo joda-time-1.6.jar
en su proyecto:
Una vez que Eclipse haya procesado los códigos (es decir, los archivos de clases) en el archivo JAR, están disponibles para hacer referencia (importar) desde su código Java. Observe en Project Explorer que hay una carpeta nueva llamada Bibliotecas referenciadas que contiene el archivo joda-time-1.6.jar.
Usted tiene suficiente sintaxis Java acumulada en su haber para escribir programas Java básicos, lo que significa que la primera mitad de este tutorial está a punto de concluir. Esta sección final presenta algunas de las mejores prácticas que le ayudarán a escribir códigos Java más limpios y más plausibles de ser mantenidos.
Usted creó algunas clases en este tutorial. Luego de generar pares de getters y setters incluso para la pequeña cantidad (de acuerdo a los estándares de una clase Java del mundo real) de atributos, la clase Person
tiene 150 líneas de código. Esta es una clase pequeña. No es raro ver clases con 50 o 100 métodos y mil líneas de origen (o más). El punto de los métodos es mantener solo los que necesita. Si necesita varios métodos ayudantes que hagan esencialmente lo mismo pero que tomen parámetros diferentes (tales como el métodoprintAudit()
), esa es una buena elección. Solo asegúrese de limitar la lista de métodos a lo que necesita, no más.
En general, las clases representan alguna entidad conceptual en su aplicación y sus tamaños deberían reflejar solo la funcionalidad para hacer lo que sea que la entidad necesite hacer. Deberían permanecer muy centradas para hacer una pequeña cantidad de actividades y hacerlas bien.
Un buen patrón de codificación cuando se trata de nombres de métodos es el patrón de nombres de métodos revelador de intenciones. Este patrón es más fácil de entender con un simple ejemplo. ¿Cuál de los siguientes nombres de métodos es más fácil de descifrar a la vista?
a()
computeInterest()
La respuesta debería ser evidente, sin embargo por alguna razón, los programadores tienen una tendencia a darle a los métodos (y variables, para tal caso) nombres pequeños, abreviados. Sin duda, un nombre ridículamente largo puede ser poco práctico pero un nombre que transmite lo que un método hace no necesita ser ridículamente largo. Seis meses después de que escriba un grupo de códigos, tal vez no recuerde lo que quiso hacer con un método llamado a()
pero es evidente que un método llamado computeInterest()
, bueno, probablemente compute interés.
Los métodos pequeños son tan preferibles como las clases pequeñas y por razones similares. Un modismo que intento seguir es mantener el tamaño de un método en una página como lo veo en mi pantalla. Esto hace que mis clases de aplicaciones sean más plausibles de ser mantenidas.
Si un método crece más allá de una página, lo refactorizo. Refactorear significa cambiar el diseño de un código existente sin cambiar sus resultados. Eclipse tiene un maravilloso conjunto de herramientas de refactorización. Normalmente, un método largo contiene subgrupos de funcionalidad agrupados. Tome esta funcionalidad y muévala a otro método (nombrándola como corresponde) y pase los parámetros como se necesite.
Limite cada método a un solo trabajo. He descubierto que un método que hace solo una cosa bien, normalmente no toma más de alrededor de 30 líneas de códigos.
Por favor, use los comentarios. Las personas que siguen luego de usted (o incluso usted mismo, seis meses más adelante) le agradecerán. Tal vez haya escuchado el antiguo refrán Un código bien escrito es de autodocumentación, por lo tanto, ¿quién necesita comentarios? Le daré dos razones por lo que esto es falso:
Así que haga comentarios en su código. Punto.
La codificación del estilo es realmente una cuestión de preferencia personal pero me gustaría ofrecer este consejo: use una sintaxis Java estándar para las llaves:
1
2
1
2
3
1
2
3
No use este estilo:
Ni este:
public static void main(String[] args) {
}
public static void main(String[] args)
{
}
public static void main(String[] args)
{
}
¿Por qué? Bueno, es estándar, por lo tanto la mayoría de los códigos con los que usted se encuentre (como códigos que usted no escribió pero que se pueden pagar para mantener) muy probablemente estarán escritos de ese modo. Una vez dicho eso, Eclipse sí le permite definir estilos de código y formatear su código de cualquier modo que a usted le guste. Lo principal es que elija un estilo y lo mantenga.
Antes de que Java 1.4 introdujera el registro incorporado, el modo canónico para descubrir lo que su programa estaba haciendo era hacer una llamada de sistema como la siguiente:
1
2
3
4
5
6
public void someMethod() {
// Do some stuff...
// Now tell all about it
System.out.println("Telling you all about it:");
// Etc...
}
El recurso de registro incorporado del lenguaje Java (consulte de nuevo Your first Java object) es una mejor alternativa. Yo nunca uso System.out.println()
en mi código y sugiero que usted tampoco lo use.
El mejor libro en la industria (en mi opinión, y no lo digo solo yo) es Refactoring: Improving the Design of Existing Code de Martin Fowler et al. (Vea Recursos). Incluso es divertido leerlo. Fowler y sus coautores hablan sobre "olores de códigos" que piden refactorización y profundizan mucho sobre las diversas técnicas para arreglarlos.
En mi opinión, la refactorización y la habilidad para escribir códigos de prueba son las aptitudes más importantes para que los programadores nuevos aprendan. Si todos fueran buenos en ambos aspectos, revolucionaría la industria. Si usted se vuelve bueno en ambos, en última instancia producirá códigos más limpios y aplicaciones más funcionales que muchos de sus colegas.
En este tutorial, ha aprendido acerca de la programación orientada a objetos, ha descubierto una sintaxis Java que le permite crear objetos útiles y se ha familiarizado con un IDE que le ayuda a controlar su entorno de desarrollo. Sabe cómo crear y ejecutar objetos Java que pueden hacer una buena cantidad actividades, que incluyen hacer cosas diferentes en base a entradas diferentes. También sabe cómo hacer que sus aplicaciones admitan archivos JAR para que los otros desarrolladores las usen en sus programas y cuenta con algunas de las mejores prácticas básicas de programación Java en su haber.
En la segunda mitad de este tutorial, comenzará a aprender acerca de algunas de las construcciones más avanzadas de la programación Java, aunque el debate general todavía será de alcance introductorio. Los temas de programación Java que se cubren en ese tutorial incluyen:
Lea "Introducción a la programación Java, parte 2: Construcciones para aplicaciones del mundo real".