Ireport y Oracle en Linux

ireportCuando queremos configurar nuestro ireport con la BD de oracle por lo general nos presenta un problema con en LNS_LANG el cual nos da muchos dolores de cabeza y no sabemos como configurarlo, ahora bien el presente post intentara ayudar en este problema que no es otra cosa que utilizar el plugin de ireport que viene en la sección de Plugins en el menu principal.
En esta ventana de Oracle Options deberemos introducir algunos valores como el TERRITORIO y el LENGUAJE.

Como determinamos el NLS_LANG de nuestra base de datos ?

La determinamos haciendo una consulta sencilla en nuestra base de datos(lo hice con sqldeveloper)
la consulta va asíi:
SELECT * FROM NLS_DATABASE_PARAMETERS;
Esta consulta nos mostrara algunos valores entre ellos el lenguaje y territorio que es lo que nosotros necesitamos una vez hecho esto podemos volver a probar nuestra conexión y veremos que ya funciona.

Saludos y espero que les funcione.

Anuncios

Ejemplo de termometro en Java

TermometroExisten muchas de las veces en que nos proponemos programar un termómetro para darle mas pinta a nuestras aplicaciones en un caso especifico he utilizado la librería gratuita de java jfree lo he utilizado para graficar los niveles de tanques de agua en la empresa en donde trabajo.

Este es un ejemplo muy básico de lo que se puede hacer con esta muy útil librería.

He intentado explicar lo que me parece un poco difícil de entender pero bueno si tienes alguna dificultad con el código solamente tienes que escribir.

Aquí les pongo un ejemplo sencillo de como lo pueden hacer y mostrando algunas de sus funcionalidades .. al ejemplo lo he modificado de su author original Bryan Scott quitandole algunas cosas del código que el programo para hacerlo un poco mas entendible al inicio para mi y ahora para Uds.

El código es el siguiente:

/* ======================================
* JFreeChart : a free Java chart library
* ======================================
*
* Project Info: http://www.jfree.org/jfreechart/index.html
* Project Lead: David Gilbert (david.gilbert@object-refinery.com);
*
* (C) Copyright 2000-2003, by Object Refinery Limited and Contributors.
*
* This library is free software; you can redistribute it and/or modify it under the terms
* of the GNU Lesser General Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* ——————–
* ThermometerDemo1.java
* ——————–
* (C) Copyright 2002, 2003, by Australian Antarctic Division and Contributors.
*
* Original Author: Bryan Scott (for Australian Antarctic Division).
* Contributor(s): David Gilbert (for Object Refinery Limited);
*
* $Id: ThermometerDemo1.java,v 1.2 2003/05/29 15:23:35 mungady Exp $
*
* Changes (since 24-Apr-2002)
* —————————
* 24-Apr-2002 : added standard source header (DG);
* 17-Sep-2002 : fixed errors reported by Checkstyle 2.3 (DG);
* 07-May-2008 : Modify for taller
*
*/

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.JThermometer;

import org.jfree.data.general.DefaultValueDataset;

/**
* A demonstration application for the thermometer plot.
* Un demostracion para la aplicacion de un termometro
*
* @author Bryan Scott
* @mofify by Darwin Betancourt Castillo
*/
public class ThermometerDemo1 extends JPanel implements ActionListener {

/** Options for the value label position combo box. */
protected static final String[] OPTIONS = {“Ninguna”, “Derecha”, “Izquierda”,”Centro”};

/** Panel 1. */
private JPanel jPanel1 = new JPanel();

/** Borderlayout 3. */
private BorderLayout borderLayout3 = new BorderLayout();

/** Panel 2. */
private JPanel jPanel2 = new JPanel();

/** Decrement button for thermometer ?. */
private JButton btnDown = new JButton();

/** Increment button for thermometer ?. */
private JButton btnUp = new JButton();

/** Grid layout 1. */
private GridLayout gridLayout1 = new GridLayout();

/** Thermometer 2. */
private JThermometer thermo2 = new JThermometer();

/** Borderlayout 1. */
private BorderLayout borderLayout1 = new BorderLayout();

/** Panel 3. */
private JPanel jPanel3 = new JPanel();

/** Grid layout 3. */
private GridLayout gridLayout3 = new GridLayout();

/** Combo box 2 for value label position. */
private JComboBox pickShow2 = new JComboBox(OPTIONS);

/** Borderlayout 4. */
private BorderLayout borderLayout4 = new BorderLayout();

/**
* Default constructor.
*/
public ThermometerDemo1() {
try {
jbInit();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* Controla los eventos de los botones
* @param e ActionEvent
*/
public void actionPerformed(ActionEvent e){
if(e.getSource() instanceof JButton){
JButton boton = (JButton) e.getSource();
if(boton.getName().matches(“btnUp”)){
setValue(1);
}
if(boton.getName().matches(“btnDown”)){
setValue(-1);
}
}
}

/**
* Initialises the class.
*
* @throws Exception for any exception.
*/
void jbInit() throws Exception {

thermo2.setValue(0);

thermo2.setOutlinePaint(null);

thermo2.setUnits(0);

thermo2.setForeground(Color.blue);
thermo2.setBackground(Color.white);
// Se establece el rango de 0 a 100
thermo2.setRange(0.0,100.0);
// El numero inicial representa el color (Solo hay tres colores y el color por defecto gris)
// 0 = verde, 1=anaranjado 2=rojo
thermo2.setSubrangeInfo(2, 80.0, 100.0, 22.0, 40.0);
thermo2.setSubrangeInfo(1, 50.0, 80.0, 18.0, 26.0);
thermo2.setSubrangeInfo(0, 0.0, 50.0, 0.0, 100.0);

thermo2.addSubtitle(“Nivel del Tanque”, new Font(“SansSerif”, Font.PLAIN, 16));

// Se establece el formato del valor del grafico
//thermo2.setValueFormat(new DecimalFormat(“#0.0”));
thermo2.setValueFormat(new DecimalFormat(“#0”));

// Layout para el JPanel principal
setLayout(gridLayout1);

jPanel1.setLayout(borderLayout3);
btnDown.setText(“Bajar”);
btnDown.setName(“btnDown”);
btnDown.addActionListener(this);

btnUp.setText(“Subir”);
btnUp.setName(“btnUp”);
btnUp.addActionListener(this);

pickShow2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
setShowValue();
}
});

jPanel3.setLayout(gridLayout3);
jPanel3.add(pickShow2,null);

jPanel1.setBorder(BorderFactory.createEtchedBorder());

// Contenedor de los botones del panel 4
jPanel2.add(btnDown, null);
jPanel2.add(btnUp, null);

jPanel1.add(jPanel3, BorderLayout.NORTH);
// Se agrega el thermometro al panel
jPanel1.add(thermo2, BorderLayout.CENTER);
// Contenedor del panel 4
jPanel1.add(jPanel2, BorderLayout.SOUTH);
// Se agrega el panel del nivel
add(jPanel1, null);
}

/**
* Starting point for the demo application.
*
* @param args ignored.
*/
public static void main(String[] args) {

final ThermometerDemo1 panel = new ThermometerDemo1();

JFrame frame = new JFrame();
frame.getContentPane().setLayout(new BorderLayout(5, 5));
frame.setDefaultCloseOperation(3);
frame.setTitle(“Ejemplo de Termometro en Java”);
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.setSize(400, 400);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((d.width – frame.getSize().width) / 2,
(d.height – frame.getSize().height) / 2);
frame.setVisible(true);

}

/**
* Sets the value of the thermometer.
*
* @param value Valor del nivel del termometro
*/
private void setValue(double value) {
try {
thermo2.setValue(thermo2.getValue().doubleValue() + value);
}catch (Exception ex) {
ex.printStackTrace();
}
}

/**
* Sets the value label position for one of the thermometers.
*/
private void setShowValue() {
thermo2.setValueLocation(pickShow2.getSelectedIndex());
}

}

Saludos y espero les sea de mucha utilidad

Zemanta Pixie

Estrategias para desarrollo en Palm

Treo 650Bueno este post lo he pensado para todos quienes desarrollamos en dispositivo mobiles y tenemos problemas con los recursos o los típicos cuelgues xq el aparato ya no dispone de recursos, por supuesto que en este post va enfocado a lo que es desarrollo en j2me.

Al momento de crear un programa tenemos que definir bien las estrategias y modelos a utilizar para optimizar de la mejor manera nuestros recursos que en este caso de nuestras dispositivos mobiles son muy limitados.

Por lo general cuando empezamos a desarrollar para estos dispositivos nos desorientamos un poco por no decir bastante ya que como siempre desarrollamos aplicaciones de escritorio sobre computadores de hoy en dia son tan potentes tendemos a despreocuparnos un poco de lo que es el ahorro de recursos y utilización de la memoria.

En fin mejor paso a destacar algunas ideas que he tomado de varios textos que me han servido para mi desarrollo y tambien al final voy a publicar los links para que Uds. mismos los lean.

Las limitaciones que son inherentes en dispositivos pequeños requiere cambiar la forma de programar nuestras aplicaciones.

Simplificar la Aplicación

Una de las cosas mas obvias para simplificar nuestra aplicación es remover características innecesarias. Considerando cada característica de nuestra aplicación cuidadosamente. Luego de quitar características innecesarias procedemos a hacer el uso y reuso de interfaces gráficas tanto como StringItems, TextField, Forms entre otras mas.

Con lo anterior me refiero que podemos utilizar un mismo botón para varias interfaces gráficas y asi mismo una forma con distintas formas de visualización es decir con diferentes objetos cargados. Intenta aprovechar cada oportunidad de aprovechar mejor tus interfaces gráficas esto haría que tu aplicación sea mas pequeña.

Usar menos memoria en tiempo de ejecución

La capacidad de memoria en tiempo de ejecución de un dispositivo pequeño puede ser limitado. Aveces estas limitaciones no son obvias. Por ejemplo, El sistema operativo de la palm define 2 tipos de memoria: dinámica y de almacenamiento. La memoria dinámica almacena los datos de la aplicación en tiempo de ejecución en particular, Esta en la pila y el monto de memoria en tiempo de ejecución. La memoria de almacenamiento es protección de escritura, memoria persistente.

El monto de memoria dinámica disponible en una aplicación varia de 32K a 256K, y lo principal RAM del dispositivo es memoria de almacenamiento. Aunque si un dispositivo tiene 8MB de RAM, los 256K limite en la memoria dinámica es importante. Si mas memoria es requerida la aplicación usa la memoria de almacenamiento, que tiene un acceso mas lento debido a al protección de escritura.
Lo siguiente son algunos tips y ejemplos de como reducir el monto de memoria en ejecución que nuestra aplicación java usa.

– Usar tipos escalares

– No depender solamente del Garbage Colector

– Ayudar al Garbage Colector

– Liberar Recursos con anterioridad

– Reusar los objetos

– Evitar Excepciones

La configuracion del Equipo

En la preferencias de tu máquina virtual de java instalada en tu palm tienes que aumentar los valores que te vienen por defecto es decir en las preferencias globales vas a activar tu el poder usar tu buffering doble es decir [Use double buffering] y la memoria máxima por defecto te viene en 2 Mb puedes ponerselo a 4Mb y el Set Maximum Java Thread Stack Size lo puedes poner tambien a 4Kb o a lo que tu gustes.

Documentos de Interés

  1. http://www.java-tips.org/java-me-tips/midp/
  2. http://www.javaperformancetuning.com/tips/j2me.shtml
  3. http://www.jasonlam604.com/books.php
  4. http://www.palowireless.com/java/tutorials.asp

Saludos y espero les sirva de mucho estos tips e ideas para el desarrollo de sus programas.

🙂

Gráficos con JfreeChart 1.0.6

Bueno la idea de publicar este post es brindar un apoyo a quienes intentan crear gráficos estadísticos en java partiendo de una versión anterior del jfreechart, como saben hay muy poca documentación en la red acerca de ejemplos o como ha ido cambiando esta librería(es decir gratis), además la guia de desarrollo es pagada.

La url es:

http://www.jfree.org

No intento perjudicar a los desarrolladores de jfreechart sino que voy a mostrar algunos cambios y pequeños ejemplos para que le sirvan a alguien mas, sobre el uso de esta librería que esta muy buena al momento de diseñar nuestros gráficos, cabe indicar que no he adquirido la guia de desarrollo pero si me he tomado un tiempo en tratar de entenderla y hacerla funcionar además al momento de bajar el paquete hay unos ejemplos que vienen con él.

Bueno basta de palabrería:

jfreechart 1.0.4 jfreechart 1.0.6
org.jfree.data.renderer.StandardXYItemRenderer org.jfree.data.renderer.xy.XYLineAndShapeRenderer
org.jfree.data.XYDataset org.jfree.data.xy.XYDataset
org.jfree.data.AbstractSeriesDataset org.jfree.data.general.AbstractSeriesDataset
org.jfree.data.DatasetChangeEvent org.jfree.data.general.DatasetChangeEvent
import org.jfree.data.DefaultMeterDataset org.jfree.data.general.DefaultValueDataset

como podemos observar en la tabla anterior lo que se ha modificado en algunos casos es el nombre y en otros solo tenemos que se ha modificado un paquete adicional como es el “xy” ahí podremos encontrar todas las clases que empiecen con XY por ejemplo: XYItemRenderer

Ejemplo:

/* ——————-
* LineChart.java
* ——————-
* (C) Copyright 2002-2005, by Object Refinery Limited.
*
*/

import java.awt.Color;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.axis.Axis;

import org.jfree.chart.labels.StandardXYItemLabelGenerator;
import org.jfree.chart.labels.XYItemLabelGenerator;

/**
* Una simple programa para demostrar como funciona la creacion de un linechar desde un XYDataset
* {@link XYDataset}.
* <p>
* IMPORTANT NOTE: THIS DEMO IS DOCUMENTED IN THE JFREECHART DEVELOPER GUIDE.
* DO NOT MAKE CHANGES WITHOUT UPDATING THE GUIDE ALSO!!
*
* NOTA: ESTA DEMOSTRACIÓN ESTA DOCUMENTADA EN AL GUIA DE DESARROLLO JFREECHART
* NO HAGAS CAMBIOS SIN ACTUALIZAR LA GUIA TAMBIÉN !!
*/
public class LineChart extends ApplicationFrame {
/**
* Crear un nuevo demo
*
* @param title Titulo del frame
*/
public LineChart(String title) {
super(title);
XYDataset dataset = createDataset();
JFreeChart chart = createChart(dataset);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(chartPanel);
}
/**
* Creando un conjunto de datos de ejemplo
*
* @return ejemplo de un conjunto de datos
*/
private static XYDataset createDataset() {
XYSeries series1 = new XYSeries(“Primero”);
series1.add(1.0, 1.0);
series1.add(2.0, 4.0);
series1.add(3.0, 3.0);
series1.add(4.0, 5.0);
series1.add(5.0, 5.0);
series1.add(6.0, 7.0);
series1.add(7.0, 7.0);
series1.add(8.0, 8.0);
XYSeries series2 = new XYSeries(“Segundo”);
series2.add(1.0, 5.0);
series2.add(2.0, 7.0);
series2.add(3.0, 6.0);
series2.add(4.0, 8.0);
series2.add(5.0, 4.0);
series2.add(6.0, 4.0);
series2.add(7.0, 2.0);
series2.add(8.0, 1.0);
XYSeries series3 = new XYSeries(“Tercero”);
series3.add(3.0, 4.0);
series3.add(4.0, 3.0);
series3.add(5.0, 2.0);
series3.add(6.0, 3.0);
series3.add(7.0, 6.0);
series3.add(8.0, 3.0);
series3.add(9.0, 4.0);
series3.add(10.0, 3.0);
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series1);
dataset.addSeries(series2);
dataset.addSeries(series3);
return dataset;
}
/**
* Creando el grafico
*
* @param dataset datos para el grafico
*
* @return un grafico
*/
private static JFreeChart createChart(XYDataset dataset) {
// create the chart…
JFreeChart chart = ChartFactory.createXYLineChart(
“Line Chart”, // Titulo de grafico
“X”, // Etiqueta del eje x
“Y”, // Etiqueta del eje y
dataset, // data
PlotOrientation.VERTICAL,
true, // incluye leyenda
true, // visualiza tooltips
false // urls
);
// AHORA PERSONALIZAMOS(le damos pinta) ALGO EL GRAFICO…
chart.setBackgroundPaint(Color.white);
// consigue una referencia para el plot en futuras personalizaciones…
XYPlot plot = (XYPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
// Permite visualizar las coordenadas trazando ejes
plot.setDomainCrosshairVisible(true);
plot.setRangeCrosshairVisible(true);

XYLineAndShapeRenderer renderer
= (XYLineAndShapeRenderer) plot.getRenderer();
XYItemLabelGenerator xy = new StandardXYItemLabelGenerator();
renderer.setBaseItemLabelGenerator(xy);
renderer.setShapesVisible(true);
renderer.setShapesFilled(true);
//renderer.setBaseItemLabelVisible(true);
renderer.setBaseLinesVisible(true);
renderer.setBaseItemLabelsVisible(true);

// Cambiando la unidad de seleccion auto tickchange a enteros solamente…
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
// PERSONALIZACION OPCIONAL COMPLETA.

//Axis axis = plot.getDomainAxis();
//axis.setTickMarksVisible(true);

return chart;
}
/**
* Crea un panel para la demostracion (Usado por SuperDemo.java).
*
* @return un Panel.
*/
public static JPanel createDemoPanel() {
JFreeChart chart = createChart(createDataset());
return new ChartPanel(chart);
}
/**
* Inicia la demostracion de la aplicacion
*
* @param args ignorado.
*/
public static void main(String[] args) {
LineChart demo = new LineChart(“Line Chart con XYDataset”);
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}

En lo posterior seguiré incluyendo mas información sobre el uso de esta librería.

Saludos.

Ventanas transparentes en java

El presente post muestra un interesante articulo de como generar ventanas transparentes para darle una forma diferente a la típica ventana o Frame cuadrado que siempre empleamos en nuestra programación.

Aquí les pongo el link que muestra como realizar este tipo de programación pero sus ejemplos no funcionan correctamente así que voy a detallar el código modificado que he creado para poder entenderlo mejor mas adelante.. oops bueno aqui esta la url:

http://www.onjava.com/pub/a/onjava/excerpt/swinghks_hack41/index.html

Crear translucent y shaped windows, evitando el código nativo, con uso inteligente del screenshot

Una de los mas comúnmente pedidos de características de swing es las ventanas transparentes. también llamadas shaped windows, con ventanas que tienen porciones transparentes, permitiendo ver el background del Escritorio y otros programas atraves de ellas. Java no proporciona ninguna forma de crear ventanas transparentes sin hacer uso de la Interface Nativa Java (JNI) (aunque son plataforma nativa debería apoyar la transparencia muy bien), pero eso no va a detenernos. Nosotros podemos hacerlo usando una de mis técnicas favoritas, el screeshot o captura de pantalla. El proceso de imitar una ventana transparente es básicamente:

  1. Crear un screenshot antes de mostrar la ventana.
  2. Usar ese screenshot como fondo(background) de la ventana.
  3. Ajustar la posición el screenshot con la linea superior de la pantalla real, crea la ilusión de transparencia.

Esta el la parte fácil. La parte dificil es actualizar el screenshot cuando la ventana se mueve o cambia. To start off, crear una subclase JPanel que puede capturar la pantalla y dibujarla como el background. como se muestra en el ejemplo

Ejemplo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentListener;
import java.awt.event.ComponentEvent;

public class TransparentBackground extends JComponent {
private JFrame frame;
private Image background;

public TransparentBackground(JFrame frame) {
this.frame = frame;
updateBackground( );
}

public void updateBackground( ) {
try {
Robot rbt = new Robot( );
Toolkit tk = Toolkit.getDefaultToolkit( );
Dimension dim = tk.getScreenSize( );
background = rbt.createScreenCapture(
new Rectangle(0,0,(int)dim.getWidth( ),
(int)dim.getHeight( )));
} catch (Exception ex) {
ex.printStackTrace( );
}
}
public void paintComponent(Graphics g) {
Point pos = this.getLocationOnScreen( );
Point offset = new Point(-pos.x,-pos.y);
g.drawImage(background,offset.x,offset.y,null);
}
public static void main(String[] args) {
JFrame frame = new JFrame(“Ventana Transparente”);
TransparentBackground bg = new TransparentBackground(frame);
bg.setLayout(new BorderLayout( ));
JButton button = new JButton(“Esto es un boton”);
bg.add(“North”,button);
JLabel label = new JLabel(“Esta es una etiqueta”);
bg.add(“South”,label);
frame.getContentPane( ).add(“Center”,bg);
frame.pack( );
frame.setSize(450,400);
frame.setVisible(true);
}
}

Ejecutalo funciona de forma interesante.

Espero les sea de utilidad !!!

Convertir Jar a PRC

Una de las cosas que siempre nos provocan el querer explotar es que luego de haber programado y generado nuestro archivo .jar, nuestro primer midlet para el pda no podemos cargarlo, por lo cual nosotros deberíamos convertirlo en prc.

En fin existen dos formas de realizar este proceso

  • Con midp4palm
  • Con jar2prc.exe o jar2prc_w.exe

Depende que máquina virtual le hayamos instalado a nuestro pda.

  • MIDP.prc
  • J9JavaVMMidp20

Como puedes apreciar para cada uno existe un convertidor de jar a prc en el caso de jar2prc viene con el paquete completo de desarrollo Java_Tech_for_Garnet_WEME57-1 dentro de la carpeta tools.

Convertidor de prc

Explicare un poco los campos que contiene la interface de conversión.

El primer campo es JAD File or URL aqui este campo direccionaremos dondes hayamos copiado nuestro archivo .jad

Automáticamente luego de que hayamos cargado el .jad veremos que se autocompleta los campos restantes hasta el Version Number.

Podemos cargarle un icono a nuestro aplicación

Una parte importante es el id que le pongamos a nuestro midlet porque eso nos serviría mas adelante para futuras operaciones.

Finalmente presionamos el botón Generar PRC.

Como puedes observar es de fácil uso.

Saludos y suerte con la conversión.

Ejecutar midlet en PDA

Logo de PalmEl siguiente post va dirigido a aquellos de nosotros que un día empezamos programando para J2ME y al querer correr la aplicación nos dio el problema de que es imposible hacerlo (Por favor asegurate que esta instalada la máquina virtual de IBM) a pesar de que habíamos instalado la máquina virtual J9 para nuestro Palm (Es necesario aclarar que las pruebas las realice en Palm 600 Treo y en Palm Tungsten E2).

Este problema se da frecuentemente xq no instalamos los archivos necesarios para que se ejecute nuestro midlet o instalamos archivos de mas como me sucedió a mi en alguna ocasión.

Es decir la siguiente pantalla:

Error de Virtual Machine

Para poder ejecutar la aplicación nuestro midlet “Hola mundo” lo que debemos hacer es instalar los siguientes archivos en tu Palm :

  • J9JavaVMMidp20.prc
  • JavaVMCheck_esES.prc

Estos archivos los obtienes del archivo que proporciona Palm para desarrollo: Java_Tech_for_Garnet_WEME57-1.zip

Cuando ya puedas ver esta pantalla en tu palm quiere decir que ya puedes correr aplicaciones .prc o en su defecto tu midlet “Hola mundo”

j9vm

J9

Y con eso ya corre nuestra aplicación.

Pruebalo y me dices como te ha ido.

Además pongo aqui el url para quienes desarrollan aplicaciones para pda.

http://www.access-company.com/spanish/developers/index.html

Saludos.