- A Bluetooth network can have one master device and upto 7 slave devices. Such a personal area network is called piconet.
- The term Device refers to a discoverable entity in the piconet.
- The process of discovering devices is called Inquiry.
- Each device in a network is assigned a UUID - Universally Unique IDentifier. A unque randomly generated number of 128 bits identfying the device.
- SADP - Service Application Device Profile enables the applications that runs on bluetooth devices to discover services on the device.
- JSR 82 is the bluetooth JSR
- javax.bluetooth is the package for bluetooth in JAVA.
Wednesday, September 10, 2008 | Posted by thetechnicalanalysis at 11:11 AM | 0 comments
Bluetooth in J2ME
Labels: Jargon
| Posted by thetechnicalanalysis at 11:06 AM | 0 comments
J2ME Display
- The devices display is seen as an instance of Display class in MIDP or CLDC profile.
- The bit depth should be atlaest one. A bit depth of one can have 2 colors.Black and white. A bit depth of 2 can have four and so on...So an n bit display willl allow 2^N colors.
- javax.microedition.lcdui and javax.microedition.lcdui.game packages manage the display.
- Contents of display are changed by passing Displayable() instances to setCurrent() method of Display.
- public void startApp() {
Display d = Display.getDisplay(this);
// ...
} // this is a typical program to start Display in the startApp() method.
Labels: CLDC, Display, J2ME, Java 2 micro edition
| Posted by thetechnicalanalysis at 11:05 AM | 0 comments
J2ME Jargon
- J2ME - Java 2 micoedition, the version of JAVA designed specifically for micro devices like PDA,Cellphones,Set top boxes etc.
- Configuration and profiles : Check this post about configurations and profiles
- CDC - Common device configuration - a set of rules defining a set of devices to be used under this scheme.
- CLDC - Common Limited Device Configuration - a more limited CDC - specifically for PDAs and phones
- MIDP - Mobile Information Device profile - A more specific CLDC which narrows down the devices under CLDC to a limited set of mobile phones and PDAs by limiting memory, screen size etc.
- JCP- Java Community Process - a community to standardize the usage of JAVA.
- JSR - Java Specification Requests - A list and specifications of configurations and profiles in J2ME. Visit www.jcp.org
- KVM - a small Virtual Machine of JAVA used in CLDC implementations. K stands for data transferred in Kilo Bytes.
- Foundation Profile - A specification for devices which support a networked J2ME enviornment. It does not support user interface. User interfaces and other support is built on top of this profile.
- PDAP - A PDA profile
- JTWI - Java Technology for Wireless Industry. A technology which attempts to standadise the J2ME technology.
- WORA - (Write Once Read Anywhere) The Java mantra which extends even to J2ME speaking of the platform independence.
- Platform fragmentation - A problem associated with J2ME applications which can not be completely solved. WORA is not fully satisfied in J2ME since differenet devices use different device specific APIs. So different versions of same program need to be specified for different platforms.
- J2MEWTK - Java 2 Micro Edition Wireless ToolKit
- Preverify - An entirely new step in the process of building J2ME applications. Bytecode verification is divided into two, one being that of preverification, so that only a lightweight second verification is requireed before loading classes actually.
- Manifest file - A file inside Java Archive which describes the content of that archive. In J2ME additional manifest information is added to manifest file describing MIDP runtime enviornment.
- Obfuscator- A tool for minimizing the size of JAR file.
- Proguard- An obfuscator.
- Ant - A powerfull build scripting tool. Can be sued for automating the build process of MIDlet suits. Opensource, similar to 'make' and a part of Apache project.
Labels: J2ME, Jargon, Java 2 micro edition
Tuesday, September 9, 2008 | Posted by thetechnicalanalysis at 11:09 AM | 0 comments
J2ME - Configurations and Profiles
Configurations are the a set of specifications defined for a kind of device whose constrains are memory and processing capability. CDC(Connected Device Configuration) and CLDC(Connected Limited Device Configuration). Usually a minimum and maximum amount of memory elements like ROM or RAM is specified as configuration.
The term Profile is more specific. A family of devices which come under a particular category in a "Device" is called a profile. It is build on top of a configuration. It specifies a set of APIs for the application development of that family. MIDP or Mobile Information Device Profile is the example. MIDP comes under CLDC. It specifies additional memory constrains, screen size, network connection and input mode which are not specified by CLDC.
Labels: CDC, CLDC, Configurations, J2ME, Java 2 micro edition, Profiles
| Posted by thetechnicalanalysis at 11:08 AM | 0 comments
J2ME - A quick introduction
J2ME combines a less resourceful JVM and a small set of JAVA apis oriented and designed specifically to develop mobile application for mobile devices. J2ME applications are also called MIDlets, like applets in J2SE and servelets in J2EE (similarity is mostly in name only).
Labels: In Java, J2ME, Java, Java 2 micro edition
Sunday, September 7, 2008 | Posted by thetechnicalanalysis at 10:40 AM | 0 comments
Why implementing runnable is better than extending thread?
So always implement runnable.
Labels: In Java, Java, Java Learning, Threading
| Posted by thetechnicalanalysis at 2:36 AM | 3 comments
Into GUI Java Network Chat
- It is two way. I meant client-server. Earlier I did a client to server messaging application.
- Connection is given inside the code itself. Its temporarily given as localhost. You can make it work in any LAN by substituting it with clients IP address.
- You will find many errors with this. Yet this will atleast teach you how not to programin JAVA. ;)
client.java
import java.net.*;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class client extends JFrame implements ActionListener
{
Socket soc=null;
PrintWriter pr=null;
DataInputStream din =null;
JPanel panel1=new JPanel();
JButton button1=new JButton("Send");
JTextArea text1=new JTextArea(20,30);
JTextArea text2=new JTextArea(5,30);
class msgs implements Runnable
{
Thread t=null;
msgs()
{
t=new Thread(this);
t.start();
}
public void run()
{
while(true){
try{
text1.setText(text1.getText()+din.readLine());
}catch(Exception ae){}
}
}
}
client()
{
try{
soc=new Socket("localhost",2008);
din= new DataInputStream(soc.getInputStream());
pr=new PrintWriter(soc.getOutputStream(),true);
panel1.setLayout(null);
setLayout(new BorderLayout());
text1.setBounds(5,5,200,200);
text2.setBounds(5,210,200,50);
button1.setBounds(5,290,200,50);
panel1.add(text1);
panel1.add(text2);
panel1.add(button1);
getContentPane().add(panel1);
button1.addActionListener(this);
msgs m = new msgs();
}catch(Exception e){}
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("Send"))
{
pr.println("Client: "+text2.getText());
text1.setText(text1.getText()+ "\nClient: "+text2.getText());
}
}
public static void main(String args[])
{
client client1=new client();
client1.setSize(250,400);
client1.setVisible(true);
}
}
server.java:
import java.net.*;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class server extends JFrame implements ActionListener
{
ServerSocket servSoc = null;
Socket soc=null;
DataInputStream din=null;
PrintWriter pr = null;
JPanel panel1=new JPanel();
JButton button1=new JButton("Send");
JTextArea text1=new JTextArea(20,30);
JTextArea text2=new JTextArea(5,30);
class readMsg implements Runnable
{
Thread t=null;
readMsg()
{
t=new Thread(this);
t.start();
}
public void run()
{
while(true){
try{
text1.setText(text1.getText()+din.readLine());
}catch(Exception e){}
}
}
}
server()
{
super("Server");
try{
servSoc=new ServerSocket(2008);
panel1.setLayout(null);
setLayout(new BorderLayout());
text1.setBounds(5,5,200,200);
text2.setBounds(5,210,200,50);
button1.setBounds(5,290,200,50);
panel1.add(text1);
panel1.add(text2);
panel1.add(button1);
getContentPane().add(panel1);
setSize(250,400);
setVisible(true);
button1.addActionListener(this);
soc=servSoc.accept();
din= new DataInputStream(soc.getInputStream());
pr=new PrintWriter(soc.getOutputStream(),true);
readMsg r=new readMsg();
}catch(Exception e){}
}
public void actionPerformed(ActionEvent ae)
{
System.out.println("Aaaaa");
if(ae.getActionCommand().equals("Send"))
{
pr.println("Server: "+text2.getText());
text1.setText(text1.getText()+ "\nServer: "+text2.getText());
}
}
public static void main(String args[]) throws Exception
{
server server1=new server();
}
}
Labels: Client Server, GUI Chat, Network Application
Friday, September 5, 2008 | Posted by thetechnicalanalysis at 6:01 AM | 0 comments
Simplest network Program in Java
- s.java
- c.java
s.java:
import java.net.*;
import java.io.*;
class s
{
ServerSocket servSoc=null;
DataInputStream din = null;
String s;
Socket soc;
s()
{
try{
servSoc=new ServerSocket(2008);
soc=servSoc.accept();
din=new DataInputStream(soc.getInputStream());
while(true)
{
s=din.readLine();
System.out.println(s);
}
}
catch(Exception e){}
}
public static void main(String ars[])
{
s s1=new s();
}
}
c.java:
import java.net.*;
import java.io.*;
class c
{
Socket soc = null;
PrintWriter pr=null;
c()
{
try{
soc=new Socket("localhost",2008);
pr=new PrintWriter(soc.getOutputStream(),true);
pr.println("This is the simplest text");
}
catch(Exception e)
{}
}
public static void main(String args[])
{
c c1=new c();
}
}
Labels: In Java, Java, Mini-Project, Network Application