Forum: PC-Programmierung Ist Java eine geeignete Sprache für Win-PC mit USB?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Besteck (Gast)


Lesenswert?

Moin moin,
ich komme aus der Delphi-Ecke und soll/muss mich auf eine 
zukunftsträchtigere Sprache umorientieren, welche 2 Anforderungen 
abdeckt:

- Win-PC mit USB Schnittstelle
- Android (einfache Apps)

Da fällt mir als Dino-Programmierer mit wenig Kontakt zu aktuellen 
Trends nur Java ein.

Für Android ist das offenbar die erste Wahl?

Für den Win-PC sieht das wohl anders aus, wenn ich nach USB und Java 
google.
Das ist wohl nicht so astrein in Java integriert (wegen der 
plattformübergreifenden Portierbarkeit) sondern nur über 
Fremdbibliotheken machbar???
Die Anforderungen an USB sind unterstes Level und nur für geringste 
Datenraten, also ein USB 1.1 - Niveau würde vollkommen reichen.

Bin ich mit Java auf dem Holzweg oder setze auf ein altes oder falsches 
Pferd?
Kann mir jemand den Kopf waschen  Erleuchtung bringen  mich auf einen 
komplett anderen Pfad führen?

Cheers,
das Besteck

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Um die USB-Schnittstelle kümmert sich nicht Deine Programmiersprache, 
sondern die Devicetreiber des Betriebssystems.

Was hast Du vor?

von Besteck (Gast)


Lesenswert?

Ja, danke das ist mir klar.
Nur scheint mir die Ansteuerung der USB-Hardware über diese Treiber von 
Java nicht sonderlich gefördert zu sein. Vermutlich weil es einfach 
keine hardwarenahe Sprache ist.
Aber irgendwelche Libraries sollte es dafür dennoch geben? Idealerweise 
eben "offizielle" und keine "Bastellösungen".

Die Anwendung:
Datenanbindung an µC-Board. War früher mal nur per RS232, ist 
mittlwerweile mit FTDI-Konverter gelöst und soll nun endlich direkt 
gemacht werden.
Die Datenmengen und Datenraten sind gering und auch nur sporadisch.
Könnte also per HID oder CDC locker realisiert werden.

Ehrlich gesagt kenne ich auch keine Software, welche mit Java 
geschrieben ist und eine native USB-Konnektivität unterstützt.
Aber ich kenne eben generell nicht viel was so an der modernen 
Software-Front passiert.

von Manuel K. (manuel1139)


Lesenswert?

Android verwendet zwar Java - läuft aber nicht in einer VM. Das Android 
SDK besitzt bereits eine HID API. Das größere Problem sehe ich 
allerdings darin, dein Gerät native USB zu machen...

: Bearbeitet durch User
von d.o. (Gast)


Lesenswert?

Moin,

ich nutze Java seit Jahren professionell. Mein letztes Projekt benötigte 
u.a. eine Anbindung eines Barcode-Scanners und sollte unter Win und OSX 
laufen. Genutzt hab ich Java mit Java-FX für die UI und die comm-api 
(http://www.oracle.com/technetwork/java/index-jsp-141752.html) für die 
Anbindung des Scanners als serielles device. Und für die USB-Variante 
gab es http://usb4java.org/index.html.

Wenn Du "nur" einen µC anbinden möchtest, solltest Du mit o.g. Dingen 
schon ausreichend Werkzeuge im Besteckkasten haben ;-)

Java als Sprache passt schon.

Grüße!

von Besteck (Gast)


Lesenswert?

Danke d.o.!
Das ist doch mal eine Aussage.

@ Manuel Kampert:
Da habe ich mich vorher vielleicht nicht klar ausgedrückt.
Ich benötige für Android keine USB-Funktionalität - muss das nur eben 
auch machen (Datenanbindung via Bluetooth). Und da ist die Sprachwahl 
mit Java sicher nicht ganz verkehrt.

Gruß,
das Besteck

von Rolf Magnus (Gast)


Lesenswert?

Besteck schrieb:
> Die Datenmengen und Datenraten sind gering und auch nur sporadisch.
> Könnte also per HID oder CDC locker realisiert werden.

Man wird doch von Java aus HID-Geräte und serielle Schnittstellen 
ansprechen können?

> Ehrlich gesagt kenne ich auch keine Software, welche mit Java
> geschrieben ist und eine native USB-Konnektivität unterstützt.

Du brauchst keine "native USB-Konnektivität". Um das USB kümmert sich - 
wie schon gesagt wurde - das Betriebssystem. Wenn dein Gerät sich als 
HID anmeldet, musst du Zugriff auf Eingabegeräte bekommen. Deinem Java 
ist dabei aber wurscht, dass das per USB angebunden ist.
Bei CDC gilt das gleiche. Ist für dein Programm einfach eine klassische 
serielle Schnittstelle.

von Besteck (Gast)


Lesenswert?

Ja, danke.
Also ich bleibe dann bei diesem Schritt.
Es gibt doch noch eineige Aktivität, um USB per JAVA zu nutzen.

Für andere Interessenten:
Neben dem Tip von d.o. habe ich auch noch Infos über eine "jna-Library" 
gefunden, welche mir hier perfekt erscheint:

https://github.com/nyholku/purejavahidapi
https://github.com/java-native-access/jna
http://www.blog.kslemb.com/doku.php/en/projects/globx/java_hid

Nochmal vielen Dank an alle Kommentatoren!

Gruß vom Besteck, das den Löffel noch nicht abgibt!

von Bastler (Gast)


Lesenswert?

Was ist denn Dein Problem USB unter Delphi anzusprechen?
Unterstützung dazu gibt es genug.
Wegen USB jetzt umzusatteln finde ich nicht besonders stichhaltig.

von Besteck (Gast)


Lesenswert?

Wie im ersten Post gleich anfangs beschrieben muss ich auch Android Apps 
schreiben.
Damit ist der Schritt Richtung Java vorgezeichnet.

Ich finde Delphi klasse, fürchte aber, dass ich ich den Zug verpasse in 
Richtung aktuelle Programmiertrends.
USB habe ich mit Delphi übrigens schon erfolgreich gemacht.
Aber wie heißt es immer (Gorbatschow lässt am Tag der deutschen Einheit 
grüßen): Wer zu spät kommt, den bestraft das Leben.
Und ich glaube, ich bin schon fast(!) zu spät dran.

Sicherlich gibt es im neuesten RAD Studio auch Android Unterstützung - 
aber warum mit aller Gewalt an alten Zöpfen festhalten bis entweder die 
Zöpfe reissen oder die Kraft ausgeht...

Das Besteck

von Jonas B. (jibi)


Lesenswert?

>Was ist denn Dein Problem USB unter Delphi anzusprechen?
>Unterstützung dazu gibt es genug.

Ja aber ob man das mit der Java-Community vergleichen kann, die ist 
rießig.

Gruß J

von Dorian H. (dorianh)


Lesenswert?

C# wäre noch interessante Alternative für dich. Sehr gut aufgebaute 
Sprache und unter Windows würde ich C# gegenüber Java vorziehen (API, 
Visual Studio). Läuft mit xamarin auch auf Android. Jedoch in der 
Performance und API bei Android nicht auf Java Niveau. Wenn du ziemlich 
anspruchsvolle Android Apps baust ist Java klar Favorit, ansonsten lohnt 
sich das auf jeden Fall C# anzusehen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.