hardware ansprechen ?

Status
Nicht offen für weitere Antworten.

Neral

Mitglied
warum kann java eigentlich keine hardware ansprechen ? also koennen sich da die leute von sun nicht was ausdenken ? dann waere java doch unschlagbar :)
 

sigma

Mitglied
da java platform unabhängig ist is dies sehr schwer. (java lässt ja alles über die runtime environment laufen.) wenn du die hardware ansprechen willst machst du am besten mit C, C++, Bash oder was auch immer ein Programm, das die Daten die du über die Hardware brauchst ausliest bzw. die Hardware steuert. Wenn du diest gemacht hasst, kannst du den Code als Nativecode einbinden. Natürlich ist dies nicht mehr platformunabhängig.

gruss sigma
 

AlArenal

Top Contributor
Mit ner bash die Hardware ansprechen? Wie geht denn das? :lol:

Also soweit mir bekannt ist, kommt man in einem Unix-System auch nicht mal einfach so an die Hardware ran. Und schonmal gar nicht mit Shellskript.. :D
 

Tommi Necker

Mitglied
Hallo,
Du solltest Dir mal das Thema "Native Methoden" anschauen. Ich selbst hab mal an nem Projekt gearbeitet, wo ich auf verschiedene Hardwaretreiber zugreifen musste. Unter Windows funktioniert es gut, mit Unix hab ich keine Erfahrung.
Abhängig von dem, was Du machen willst, must Du eventuell einen eigenen EventHandler schreiben, der die Rückgabewerte entgegen nimmt. Und schau Dir das Thema Hexzahlen an!

Viel Glück
 
R

Roar

Gast
Neral hat gesagt.:
warum kann java eigentlich keine hardware ansprechen ? also koennen sich da die leute von sun nicht was ausdenken ? dann waere java doch unschlagbar :)
sagt mal, könnte man da sdenn nicht in die vm integrieren? und die vm holt dann die entsprechende soundkarte oder usb port raus oder so
 

AlArenal

Top Contributor
Roar hat gesagt.:
sagt mal, könnte man da sdenn nicht in die vm integrieren? und die vm holt dann die entsprechende soundkarte oder usb port raus oder so

Warum setzen wir uns nicht zusammen und überlegen uns ne tolle Erfindung? Ich hab da schon eine Idee für etwas, das ich mal einfach "Rad" genannt habe...

Andererseits wäre schon viel gerettet, wenn der eine oder andere sich mal selbst trauen würde eine Suchmaschine zu bedienen. Dann findet man vielleicht fertige USB- und Sound-Klassen...
 

tomkruse

Bekanntes Mitglied
Hi!

Man kann mit Java sehrwohl - zumindest indirekt - auf alles zugreifen, worauf man zugreifen will. Das ganze geht mittels JNI und einer DLL-Datei, die Funktionen enthält, die z.B. in C++, Visual Basic etc. geschrieben wurden. Ich habe sowas mal gemacht, um Fenstertitel auszulesen. Ist aber ziemlich aufwändig und man büsst dabei die Plattformunabhängigkeit (die größte Stärke von Java) ein.

Cu - Tom.
 

juppi

Mitglied
Hallo,



Was steht in so einer DLL (oder meinetwegen einem anderen ausführbaren Programm), das für mich den Desktop per SystemParametersInfo() manipuliert?
Ich möchte den Dektop von windows nach unten schieben, um oben einenf festen Platz für meine Applikation zu haben.

Ich habe hier Info zur passenden WinApi-Funktion, weiß aber jetzt nicht mehr weiter.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/w98ddk/hh/w98ddk/multimon_0ay7.asp

Wie spreche ich diese Funktion genau an?

wie sieht denn von c++ aus der Code genau aus, der SPI anspricht? Ich sehe immer nur die Definition mit Platzhaltern für zu übergebende Werte.
Ich kann mir aber den übergebenen Parameter nicht recht vorstellen. Ich muß der WinApi doch bestimmte Werte mitteilen.

Ich stelle mir den Aufruf in etwa vor, als würde ich (ähnlich wie in der Shell und in Shell-skripten) diesen in die DOS-Box hineinrufen. Ist das in etwa so? Oder ganz daneben und völlig anders?
So könnte ich mir den Transfer nach JNI in etwa vorstellen.


Danke für Hilfe oder Hinweise wo ich mich schlauer machen kann oder wo es Codebeispiele daür geben könnte.

(C++ kompilieren etc, bekomme ich auch noch hin. ...)

Schönen Gruß,
Juppi[/url]
 

L-ectron-X

Gesperrter Benutzer
Da die VM das Bindeglied zwischen Java und OS darstellt, neige ich dazu der Meinung von Roar zuzustimmen.
Irgendeinen Grund muss es aber haben, warum die Leute von Sun so etwas noch nicht in der VM implementiert haben. ???:L
 
R

Roar

Gast
aber es sollte doch auf allen betriebssystemen die möglichkeit geben auf hardware daten zuzugreifen z.B. RAM oder so. und wenn die VM die daten nicht bekommen kann wird halt ne exception geworfen. :? also ich finds schade dass die sowas noch nicht eingefügt haben.
 

Grizzly

Top Contributor
Die Frage ist ja wohl eher: Gibt es einen überhaupt einen Grund mit Java direkt die Hardware ansprechen zu wollen?

Um bspw. Sound auszugeben, kann ich ja das Java Media Framework benutzen. Und den Drucker brauch ich ja auch nicht direkt über die parallele Schnittstelle ansprechen. Dafür hat Java ja extra Klasse zum Drucken. Vor allem wäre es schon deswegen Nonsens, da der Drucker ja auch ein Netzwerkdrucker sein könnte.
Das Ansprechen der seriellen Schnittstelle wird - außer bei medizinischen Meßgeräten & Co. - auch meistens nicht benötigt.

Und für die wenigen Spezialfälle, in denen man doch etwas direkt ansprechen muss, hat man ja noch die Möglichkeit native Bibliotheken per JNI einzubinden.



P.S.: Für das Ansprechen von seriellen und parallelen Schnittstellen gibt es für Windows und Solaris bspw. von Sun das Java Communications API.
 

L-ectron-X

Gesperrter Benutzer
Grizzly hat gesagt.:
Und für die wenigen Spezialfälle, in denen man doch etwas direkt ansprechen muss, hat man ja noch die Möglichkeit native Bibliotheken per JNI einzubinden.

Klar, geht das. Aber es geht die plattformunabhängigkeit verloren, wenn man z.B. unter Windows dll-Dateien einbinden muss.

Grizzly hat gesagt.:
P.S.: Für das Ansprechen von seriellen und parallelen Schnittstellen gibt es für Windows und Solaris bspw. von Sun das Java Communications API.

Auch richtig. Hast Du aber mal versucht, damit einzelne Pins am parallelen Anschluss anzusprechen?
Auch hier brauchst Du z.B. unter Windows einen Treiber, der als dll-Datei vorliegt... :roll:
 

Reality

Top Contributor
Ist es nicht ein großer Schwachsinn, wenn man ein C++-Programm programmiert und diesen dann mit Java anspricht?
Da kann man grad alles in C++ machen! Wozu dann noch Java?

Übrigens kann man in C/C++ auch plattformunabhängig programmieren.
Man benutzt einfach Ansi C/C++ und beispielsweise GTK+ oder QT o.ä.

Liebe Grüße
Reality
 

Grizzly

Top Contributor
L-ectron-X hat gesagt.:
Grizzly hat gesagt.:
Und für die wenigen Spezialfälle, in denen man doch etwas direkt ansprechen muss, hat man ja noch die Möglichkeit native Bibliotheken per JNI einzubinden.

Klar, geht das. Aber es geht die plattformunabhängigkeit verloren, wenn man z.B. unter Windows dll-Dateien einbinden muss.

Ja, aber geht nicht immer die Plattformunabhängigkeit verloren, wenn ich Hardware direkt anspreche? :? Oder hab' ich den Thread falsch verstanden und ihr wollt eine plattformunabhängige Möglichkeit in Java um Hardware anzusprechen?

L-ectron-X hat gesagt.:
Grizzly hat gesagt.:
P.S.: Für das Ansprechen von seriellen und parallelen Schnittstellen gibt es für Windows und Solaris bspw. von Sun das Java Communications API.

Auch richtig. Hast Du aber mal versucht, damit einzelne Pins am parallelen Anschluss anzusprechen?
Auch hier brauchst Du z.B. unter Windows einen Treiber, der als dll-Datei vorliegt... :roll:

Stimmt, mit der API kann man nur eine Datenübertragung über den entsprechenden Port durchführen. Einzelne Pins für bspw. wissenschaftliche Zwecke geht nicht. Aber das ist dann wirklich ein Spezialfall. Unter DOS mit Assembler würde ich das noch hinbekommen, doch bspw. unter Windows wüsste ich gar nicht, wie man das hinbekommt. Vielleicht mit irgendwelche tieferen API aufrufen...? 99% der Programme brauchen aber so einen Zugriff gar nicht. Denn meisten reichen Zugriff auf den Window Manager (sprich die graphische Oberfläche inkl. Tastatur und Maus), auf die Soundkarte (sprich Sound-Eingang [Mikro & Line-In] und Sound-Ausgang), auf Drucker (lokal oder im Netz), auf das Netzwerk per TCP/IP, auf Datenbanken und schließlich auf Dateien.
 

Grizzly

Top Contributor
Reality hat gesagt.:
Ist es nicht ein großer Schwachsinn, wenn man ein C++-Programm programmiert und diesen dann mit Java anspricht?
Da kann man grad alles in C++ machen! Wozu dann noch Java?

Übrigens kann man in C/C++ auch plattformunabhängig programmieren.
Man benutzt einfach Ansi C/C++ und beispielsweise GTK+ oder QT o.ä.

Liebe Grüße
Reality
In vielen Fällen braucht man auch keine Zusatzbibliotheken. Und C/C++ Programme müssen dann immer noch auf bzw. für das jeweiligen System kompiliert werden, Java Programme können so verteilt werden.
 
R

Roar

Gast
Grizzly hat gesagt.:
L-ectron-X hat gesagt.:
Grizzly hat gesagt.:
Und für die wenigen Spezialfälle, in denen man doch etwas direkt ansprechen muss, hat man ja noch die Möglichkeit native Bibliotheken per JNI einzubinden.

Klar, geht das. Aber es geht die plattformunabhängigkeit verloren, wenn man z.B. unter Windows dll-Dateien einbinden muss.

Ja, aber geht nicht immer die Plattformunabhängigkeit verloren, wenn ich Hardware direkt anspreche? :? Oder hab' ich den Thread falsch verstanden und ihr wollt eine plattformunabhängige Möglichkeit in Java um Hardware anzusprechen?

ja wir wollen dass solche standart funktionen wie cd laufwerke, und andere hardware devieces direkt ansprechen in der J2SE haben. diese möglichkeiten bietet jedes betriebssystem, und wenn nicht dann kommt halt ne Exception.
 
S

stev.glasow

Gast
Grizzly hat gesagt.:
Reality hat gesagt.:
Ist es nicht ein großer Schwachsinn, wenn man ein C++-Programm programmiert und diesen dann mit Java anspricht?
Da kann man grad alles in C++ machen! Wozu dann noch Java?

Übrigens kann man in C/C++ auch plattformunabhängig programmieren.
Man benutzt einfach Ansi C/C++ und beispielsweise GTK+ oder QT o.ä.

Liebe Grüße
Reality
In vielen Fällen braucht man auch keine Zusatzbibliotheken. Und C/C++ Programme müssen dann immer noch auf bzw. für das jeweiligen System kompiliert werden, Java Programme können so verteilt werden.

Jetzt geht das schon wieder los :autsch:
 

Reality

Top Contributor
Grizzly hat gesagt.:
In vielen Fällen braucht man auch keine Zusatzbibliotheken. Und C/C++ Programme müssen dann immer noch auf bzw. für das jeweiligen System kompiliert werden, Java Programme können so verteilt werden.
Klar, ist aber nicht gerade ein großer Aufwand. Dafür hat man eben die Vorteile, die C und C++ bieten.
Z.B. wenig Resourcen und Geschwindigkeit.

Kommt mir bitte nicht, mit irgendwelchen "Benchmarks", wo Java C++ schlägt. Das kommt
1. auf die Programmierung drauf an
2. auf den Compiler


Liebe Grüße
Reality
 

L-ectron-X

Gesperrter Benutzer
Niemanden interessiert hier ein Vergleich zwischen Java und was weiß ich welcher Programmiersprache.
Roar hat's wieder mal auf'n Punkt gebracht. :)
 
S

stev.glasow

Gast
Es ist doch immer das gleiche ... :roll:
(sorry das muss jetzt aber mal sein)
 

Grizzly

Top Contributor
Reality hat gesagt.:
Grizzly hat gesagt.:
In vielen Fällen braucht man auch keine Zusatzbibliotheken. Und C/C++ Programme müssen dann immer noch auf bzw. für das jeweiligen System kompiliert werden, Java Programme können so verteilt werden.
Klar, ist aber nicht gerade ein großer Aufwand. Dafür hat man eben die Vorteile, die C und C++ bieten.
Z.B. wenig Resourcen und Geschwindigkeit.

Kommt mir bitte nicht, mit irgendwelchen "Benchmarks", wo Java C++ schlägt. Das kommt
1. auf die Programmierung drauf an
2. auf den Compiler


Liebe Grüße
Reality

Es ging mir ja auch nicht darum hier einen Flamewar C/C++ vs. Java loszubrechen :oops: . Ist ja auch eigentlich Nonsens. Java ist ja in C/C++ geschrieben und läuft meist bis fast immer auf Systemen die mit C/C++ geschrieben wurden. :D

Der Knackpunkt an der Sache ist ja der, dass Java plattformunabhängig sein soll. Und bspw. gibt es eine serielle Schnittstelle nicht an einem PDA (oder zumindest auf den meisten nicht). Aber über einen PDA kann man per Infrarot über einen entsprechenden Drucker mit Infrarot drucken genauso wie man an einem Desktop Rechner auch drucken kann.
Wenn man natürlich einen TCP/IP Stack für seine parallele Schnittstelle in Windows implementieren will, ist man mit Java bestimmt an der falschen Adresse. :wink:
 

foskaty

Mitglied
Reality hat gesagt.:
Ist es nicht ein großer Schwachsinn, wenn man ein C++-Programm programmiert und diesen dann mit Java anspricht? Da kann man grad alles in C++ machen! Wozu dann noch Java?

Übrigens kann man in C/C++ auch plattformunabhängig programmieren.
Man benutzt einfach Ansi C/C++ und beispielsweise GTK+ oder QT o.ä.

Einige Anmerkungen dazu:

Irgendwann und irgendwo gibt es Leute, die es der Java-Programmiergemeinde ermöglichen, auf allen möglichen und unmöglichen Systemen auf das jeweilige Dateisystem, auf die Soundkarte, auf den Drucker und was weiß ich noch alles zuzugreifen. D.h. es gibt Leute, die den "Unterbau" der Java-Portabilität erstellen und nach "oben", d.h. in die VM hinein, ein und dasselbe Interface allüberall anbieten. DIESE Menschen brauchen das Java Native Interface, um aus der VM-Welt mal eben "nach Hause" zu telefonieren. Es ist fast wie bei Neo in seiner MATRIX: Irgendwo ist die Hardware, auch wenn wir uns virtuell bewegen, letztendlich ist da irgendwo dasjenige System, die CPU, die auch Java benötigt, um zu laufen... "Ich brauche ein Telefon!" :)

Sicher kann ich auch portabel in C und C++ programmieren (aber Achtung: Es gibt hier schattige Bereiche, die sind alles andere als portabel), aber ein übersetztes C-Programm ist eben nicht "mobil", ist kein "mobile code", d.h. ich kann meine Java-Applikation in übersetzem Zustand auf einen Server packen und dann - wo immer ich bin, was immer ich auch für ein System unterm Bytecode-Interpreter habe - vor Ort ohne weiteres ausführen! Das geht so mit C und C++ nicht! Ich kann mein x86-Office, selbst wenn es mit Qt gebunden ist, nicht einfach auf einem PowerPC-basierten Mac schaufeln und dann damit arbeiten. (Dafür gibt es VMware, VirtualPC & Co.)

Es gibt zudem interessante Artikel, die belegen, daß man selbst als C++-Programmierer von Java profitiert, in dem man nämlich über Projekte wie den GNU Java-Native-Compiler (GCJ) Zugriff auf die GUI-Bibliotheken von Java bekommt und dies ausnutzt, um diesen systemabhängigen Teil von den auf Portabilität getrimmten Java-APIs erledigen läßt. Das heißt, hier haben wir den umgekehrten Weg, der ebenfalls (!) nichts mit Schwachsinn zu tun hat, es handelt sich in beiden Fällen um ganz normale, im Falle von JNI zeitweise sogar zwingend erforderliche Methoden, um Probleme zu lösen.

Fazit: Irgendwo ist der Preis und die Arbeit versteckt, die geleistet werden muß, damit der Java-Programmierer portabel coden kann. Es hängt von der Zielsetzung des jeweiligen Projekts ab, ob ich C++ und/oder Java in dem einen oder anderen Umfange zur Implementierung nutze.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M "Hardware" mit Java steuern? Blinkende Würfel? Allgemeine Java-Themen 57
O Java Hardware Software Zeit Allgemeine Java-Themen 7
K LED-Matrix oder andere "Hardware" für JavaProgrammierung Allgemeine Java-Themen 9
T Hardware sicher entfernen Allgemeine Java-Themen 8
S Hardware Prüfung Allgemeine Java-Themen 13
J Hardware Programmierung Allgemeine Java-Themen 3
A Hardware Properties auslesen Allgemeine Java-Themen 10
E Hardware zu Java Allgemeine Java-Themen 10
C Hardware auslesen [CPU,RAM] Allgemeine Java-Themen 2
G Zugriff auf Hardware Allgemeine Java-Themen 6
C Hardware Erkennung (Brenner) Allgemeine Java-Themen 2
N Hardware-Webserver mit Java (JSP/Servlet)-Unterstützung? Allgemeine Java-Themen 8
B Java und Hardware Allgemeine Java-Themen 3
W Bizerba Waage ansprechen Allgemeine Java-Themen 44
C Nested JSON in Java ansprechen [Wordpress Rest Api] Allgemeine Java-Themen 26
M Über Liste verschiendene JComponents mit eigenem implementierten Interface ansprechen Allgemeine Java-Themen 7
K Labels mit Namen ansprechen Allgemeine Java-Themen 3
I USB ansprechen Allgemeine Java-Themen 2
K Xattr Mac unter Java ansprechen Allgemeine Java-Themen 17
S GPS-Maus über USB ansprechen Allgemeine Java-Themen 8
buk USB Geräte ansprechen Allgemeine Java-Themen 14
redJava99 Speicherchipkarte ansprechen / I2C Allgemeine Java-Themen 2
G Excel Menüsteuerung ansprechen Allgemeine Java-Themen 3
Sonecc Ansprechen von Schnittstellen des PCs Allgemeine Java-Themen 4
Z Elemente einer HashTabelle gezielt ansprechen Allgemeine Java-Themen 10
R Barcode Scanner mit JavaPos ansprechen Allgemeine Java-Themen 1
G Druckenport eines USB -> Druckerport Adapters ansprechen Allgemeine Java-Themen 4
ARadauer mit java photoshop ansprechen Allgemeine Java-Themen 8
M Daten aus einem ZIP wie die im JAR ansprechen Allgemeine Java-Themen 4
K exe Programm einbinden/ansprechen Allgemeine Java-Themen 5
G Servlet über apache Tomcat ansprechen Allgemeine Java-Themen 6
F Ansprechen eines Array in der JSP Allgemeine Java-Themen 4
Y Javadoc - Wie Parameter ansprechen bei Methodenkommentar Allgemeine Java-Themen 2
G Mikrocontroller mit Java ansprechen Allgemeine Java-Themen 2
S Usb Port ansprechen Allgemeine Java-Themen 7
M Paralle Schnittstelle ansprechen Allgemeine Java-Themen 2
J Mehrere CPUs gleichzeitig ansprechen Allgemeine Java-Themen 4
MQue Button ansprechen Allgemeine Java-Themen 5
I Mehrere Soundkarten mit JavaSoundAPI ansprechen Allgemeine Java-Themen 2
N Serielle Schnittstelle ansprechen Allgemeine Java-Themen 9
M pdf maker via java code ansprechen Allgemeine Java-Themen 2
N USB Device ansprechen Linux Allgemeine Java-Themen 9
J MS Access mit Java ansprechen Allgemeine Java-Themen 3
M Ansprechen der Windows API Allgemeine Java-Themen 5
J PS/2-Schnittstelle ansprechen Allgemeine Java-Themen 7
R ISDN-Modem ansprechen Allgemeine Java-Themen 2
E Seriellen Port unter Windows ansprechen Allgemeine Java-Themen 16
S Datei in .jar über url ansprechen Allgemeine Java-Themen 3
K Ansprechen und Verwalten der Parallelport Schnittsstelle Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben