Hola,
La programacion de modulos de Bluetooth "normalmente" se realiza a traves de un Stack de Bluetooth. Esto viene integrado con el S.O. El Stack de bluetooth cumple dos misiones:
- 1º Tener un API (Application Program interface). Una serie de funciones a las que puedes llamar para hacer cosas.
- 2º Tener una pila de protocolos y unos "servers" por defecto disponibles para cada perfil. Ejm en el caso del Obex es el que recibe el fichero de forma remota y lo graba.
Este concepto de Stack de Bluetooth es valido para Windows, Linux, Symbian o donde haya un S.O tanto propietario como libre para aplicaciones de terceros.
En Linux el Stack mas usado (por no decir el unico) es el BlueZ.
http://www.bluez.org/Dependiendo de la distribucion que uses puede venir o no. Pero siempre esta disponible para su descarga tanto a nivel de usuario de S.O. o con las librerias de desarrollo para el mismo.
Puedes ver los recursos de desarrollo en su pagina.
http://www.bluez.org/development/Primero No obstante, independientemente del stack y consecuentemente el S.O que elijas para hacer cosas, es muy importante tener nociones basicas de como funciona el Bluetooth. Los procesos de Inquiry, conexiones, etc...
Si no los conceptos del Stack te sonaran a chino.
¿Que lenguaje utilizar?
En Linux por razones obias e historicas: C o C++. Es el lenguaje nativo de este S.O. (De echo C se desarrollo para hacer el UNIX, del que a su vez parte LINUX).
Yo personalmente, por las limitaciones que tiene Java en el uso de perifericos de hardware (que si no tienes el API JSR adecuado olvidate), me decanto siempre por C o C++ (preferible este ultimo si el proyecto pasa de 3000 lineas).
Java solo lo usamos en algunos moviles en los que no tienes S.O libre (sin uno propietario del fabricante: ejm serie 40 de Nokia) y no tienes otra opcion que programar en Java. Pero tanto en Windows, Linux o Symbian (y por supuesto Windows Mobile) nosotros siempre usamos C++.
Espero que esto te valga para situarte...
Saludos,
Sir Graham.