miércoles, mayo 15, 2013

Archivo de configuración en Java similar al App.config de .NET

Luego de replicar mi helper de Sql en Java, el siguiente paso fue utilizar un archivo externo de configuración para guardar el "ConnectionString".

Cómo lo hacemos en .NET


En .NET se encuentra integrado a Visual Studio. En un proyecto de consola simplemente agregamos un "Application Configuration File" que nombra como App.config. Este archivo se renombrará a "NombreDeEjecutable.config" al momento de compilar.

Para leerlo, usamos los métodos estáticos de la clase ConfigurationManager.

Cómo hacer algo similar en Java


Java tiene un objeto llamado "Properties" que gestiona objetos para guardar configuraciones y contiene métodos de escritura y lectura a disco.

Usé este objeto para crear mi helper llamado (obviamente) ConfigurationManager. Lo implementé cómo singleton de modo que la primera vez que lo invocamos lee las configuraciones desde disco y luego revisa todo desde memoria.

Este es el código que agregué a mi librería de helpers:

package ar.com.bdamian.configuration;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class ConfigurationManager {

private static Properties p = null;

private static Properties getInstance() {
if (p==null) {
p = new Properties();
try {
p.load(new FileInputStream("config.properties"));
} catch (IOException ex) {}
}
return p;
}

public static String getAppSetting(String appSetting) {
Properties prop = getInstance();
return prop.getProperty(appSetting);
}
}

Luego, para usarlo en un proyecto hay que agregar un archivo de texto llamado "config.properties" a nivel de la carpeta del proyecto conteniendo los datos necesarios.


En mi ejemplo fue un ConnectionString:
connectionString=jdbc\:sqlserver\://localhost\\SQLEXPRESS\:1433;DatabaseName\=Northwind;user\=usuario;Password\=password

Por ultimo, lo llamamos para obtener la configuración de esta forma:
String connString = ConfigurationManager.getAppSetting("connectionString");

No se si esta es la mejor forma, pero como vengo de C# .NET, me resulta cómodo hacerlo así.

jueves, mayo 02, 2013

Java: ¿Cómo referenciar clases de otro proyecto con Eclipse?

Una vez terminado "Eclipse and Java for Total Beginners", lo primero que estoy intentando es traducir mi librería personal de clases .NET.

Creé un nuevo proyecto y comencé a traducir mi clase base (superclass en Java) para conexiones a SQL Server.

Para probar, hice un nuevo proyecto y traté de heredar mi clase con lo que me encontré con el error: "The import xxx cannot be resolved".

(Google "java import other project package cannot be resolved to a type")

¿Cómo es en Eclipse lo que en Visual Studio es click derecho en "References" -> "Add Reference" -> "Projects"?


En Eclipse es "Project" -> "Properties" -> "Java Build Path" -> tab "Projects" -> "Add". Seleccionamos el proyecto donde están las clases que queremos utilizar y le damos "ok".

En este caso estoy heredando una clase abstracta por lo que aprendí dos nuevas cosas:

¿Cómo se indica que estamos heredando de otra clase?
C#
public class Hija : Padre {

Java
public class Hija extends Padre {


¿Cómo se define un método abstracto de la superclase?

C#
protected override String metodo() {

Java
@Override
protected String metodo() {

Continuará...

martes, abril 30, 2013

Java para desarrolladores .NET

Soy desarrollador .NET desde hace mucho tiempo y creo que C# es uno de los lenguajes más elegantes de todos. Al día de hoy no hay nada que no haya podido hacer en C#.

Sin embargo siempre me gustó Java y ahora tengo la oportunidad de aprenderlo debido a una necesidad laboral.

No encontré muchos recursos en la web para un desarrollador .NET que quiere aprender Java, de modo que voy a ir posteando mi recorrido.

¿Cómo creo un proyecto nuevo?
¿Cómo compilo una aplicación?
¿Cual es el equivalente en Java al DataTable de .NET?

Estas son las preguntas que tengo y no "¿qué es un objeto?" o "¿que es herencia?".


Comencemos


Para empezar es necesario mirar el curso Eclipse and Java for Total Beginners. Si vamos a programar en Java, vamos a usar Eclipse y este tutorial se focaliza más en el uso de la herramienta que en explicar el código.

Aunque el curso tiene varios años, es completamente aplicable a las versiones nuevas de Eclipse. El único punto que cambió es los JUnit Test Cases, pero rápidamente se entienden las diferencias.

Continuará...