wie wurde die api gemacht? < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:54 Do 08.03.2007 | Autor: | AriR |
hey leute
bei java zB, da sind ja alle "befehle"(bzw Klassen) so mehr oder weniger selbst schon durch "grundbefehle" programmiert worden. rein logisch gesehen, müsste man eignetlich selber die komplette java api programmieren können ohne dabei auf diese zuzugreifen.
Mit welchen "grundbefehlen" haben denn die eingetlichen programmieren der api das gemacht? nur mit den schlüsselwörtern oder wie?
wäre echt nett, wenn mir das jemand sagen könnte, da ich mich das schon immer gefragt habe.
gruß an alle
Ari :)
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:49 Do 08.03.2007 | Autor: | piet.t |
Hallo,
wenn Dich interessiert wie die Standardklassen programmiert wurden schau Dir doch einfach den Quellcode an!
In meiner jdk-Installation gibt es auf oberster Ebene eine src.zip, die den kompletten api-Sourcecode enthält.
Frag mich jetz auf die schnelle nicht, wie die da hingekommen ist - keine Ahnung, ob die standardmäßig da liegt, ob man bei der jdk-Installation was angeben muss, oder ob ich die irgendwann mal extra runtergeladen habe (müsste es dann auf ale Fälle auf der su-website geben).
Schau doch einfach mal, ob Du die bei Dir auch findest!
Gruß
piet
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 00:00 Fr 09.03.2007 | Autor: | AriR |
bei mir leider nicht.. finde auf jeden fall nichts.
weiß das denn keiner viell so, wie die api genau geschrieben wurde? es muss ja eine menge von grundwörtern geben mit denen man alle programm herstellen kann, die vor allem auch dazu benutzt wurden, die api überhaupt zu programmieren
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:16 Fr 09.03.2007 | Autor: | Kroni |
Hi,
meinst du jetzt die JavaAPI?
Also zum Grundaufbau von Java, bzw. den Aufbau von Java würde ich so beschreiben:
Du hast einmal deinen JavaCode, den du schreibst.
Dieser wird dann von der Java-VM (Virtual Machine), die dann den Code, den du geschrieben hast, übersetzt.
Dann kommt die Virtual Machine mit diesem Code, und sagt dem OS, was es zu tun hat.
Man hat also diese VM zwischengeschaltet.
Ein Analogon zu dieser Sache sollte das .NET Framework von MS werden.
Dort wird also nicht direkt der Sourcecode in Binärcode umgewandelt, sondern erst in eine Plattformunabhänigen Code, der dann von der VM in den entsprechenden Code umgewandelt wird, den das OS haben möchte.
So sind Java-Programme sowohl auf einem "normalen" Windowsrechner ausführbar, als auch z.B. unter Linux.
Und ich denke, nun kann ich mal auf jede beliebige Programmiersprache zurückkommen:
Du schreibst irgendwelche Wörter, die dann von deiner Programmierungsumgebung passend für den Prozessor "übersetzt" werden.
So wird z.B. eine Schleife, die du irgendwie z.B: in Pascal oder Java oder wie auch immer schreibst, in sog. Maschinencode/Binärcode übersetzt.
Dazu gibt es dann sog. Bibliotheken, in denen diese Wörter, die du benutzt, festgeschrieben sind. So ist dort z.B. irgendwo festgeschrieben, dass der Prozessor bei dem und dem Befehl das und das macht, denn ein Befehl löst ja meistens eine größere Befehlsfolge aus.
Gut, um die Frage zu beleuchten, wie man so etwas schreiben kann:
Wenn man ganz unten anfangen will, so sollte man Assembler können, denn damit spricht man den Prozessor direkt an. Kannst du Assembler, kannst du damit ein Programm schreiben, welches es dir erlaubt, allgemien Begriffe zu definieren, so dass du einfacher Programme schrieben kannst*g*
Gut...wie die JavaAPI programmiert ist....
Hier mal ein Link:
http://www.physik.uni-muenchen.de/kurs/Computing/java/node18.html
Naja, aber auch die JavaAPI muss dann ja irgendwo die Begriffe haben, mit denen man z.B. auf das Betriebssystem zurückgreifen kann. Dann sagt deine Entwicklungsumgebung nämlich dem OS, was es tun soll, bzw was es ausführen soll, damit deine Klamotten berechnet werden.
Naja, ich hoffe, du kannst verstehen, wie das einigermaßen grob zusammenhängt.
Sláin,
Kroni
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 08:34 Fr 09.03.2007 | Autor: | AriR |
hey vielen dank schonmal für den langen beitrag,
wenn ich es richtig verstanden habe, wurden einige klassen der java-api mit dem assembler erstellt.
wäre es denn möglich die komplette java-api komplett nachzuprogrammieren ohne auf den assembler zuzugreifen und ohne die api selbst zu benutzen?
nein oder? das würde ja bedeuten, dass die komplette programmieresprache auf den schlüsselwörteraufgebaut wäre, was ja mehr oder weniger unmöglich ist (kommt mir zumindest so vor im moment)
so gesehen liegt dsa geheimnis der java-api in assembler oder?
einige sehr wichtige befehle zum erstellen beliebiger programme konnten nur mit hilfe des assemblers definiert werden und auf diesen befehlen baut dann mehr oder weniger die ganze java-api auf, so stelle ich es mir jetzt auf jeden fall vor.
kommt das in etwas hin?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:10 Fr 09.03.2007 | Autor: | piet.t |
In allen Punketn kann ich Kroni da nicht zustimmen, ich versuch mich auch mal an einer entsprechenden Beschreibung....
Bei den klassischen Programmiersprachen werden die menschenlesbaren Programme durch einen Compiler in Maschinencode übersetzt, der für den Prozessor direkt verständlich (und deswegen auch nur auf einer bestimmten Plattform lauffähig) ist.
Bei Java und den diversen .Net-Sprachen erzeugt der Compiler (noch nicht die VM) erstmal einen Zwischencode, der weder für Menschen noch für Prozessoren sonderlich gut lesbar ist sondern irgendwo dazwischen liegt. Das ganze ist dafür aber noch unabhängig vom verwendeten Prozessor.
In Java nennt sich das dann Bytecode, bei .Net ist das analogon die MSIL.
Diesen Bytecode kann man jetzt in eine virtuelle Maschine (VM) füttern, die dann zur Auführungszeit aus dem Bytecode Maschinencode erzeugt, der dann auf dem Prozessor ausgeführt wird.
In welcher Sprache Compiler und VM geschrieben sind kann man nicht unbedingt genau sagen - vor allem bei der VM gibt es ja unterschiedliche Implementierungen für die verschiedenen Plattformen. Wichtig ist, dass die VM vielleicht nicht im Assembler(was im wesentlichen ein wenig besser meschenlesbarer Maschinencode ist) geschrieben sein muss, aber die entsprechenden Maschinencode-Sequenzen erzeugen muss!
Jetzt aber zurück zur API: bei den neueren Java-Versionen ist meines Wissens die komplette API in reinem java geschrieben! Man muss sich das jetzt nicht so vorstellen, dass alle API-Klassen nur aus den java-Schlüsselwörtern und -Operatoren bestehen (was übrigens das einzige ist, was der Compiler wirklich übersetzt), sondern das gilt nur für einige ganz grundlegende Klassen (ich denke mal java.lang.String wird so was sein, es wird im wesentlichen durch char-Array implementiert), andere Klassen (z.B. java.lang.Integer) greifen in Ihrer Implementierung dann wieder auf diese elementareren Klassen zu.
Ich habe nochmal nachgeschaut - die jdk-Installationsroutine bietet die Option an, die API-Sourcen mitzuinstallieren (was Du möglicherweise nicht explizit ausgewählt hast). Vielleich lässt Du einfach nochmal den Installer laufen, installierst die API-Sourcen und schaust Dir ein paar Klassen, die Dich interessieren mal im Original an!
Gruß
piet
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:32 Sa 10.03.2007 | Autor: | AriR |
vielen dank für die ausführlich antworten jungs :)
mich interessiert keine spezielle klasse, hab mich nur gewundet, dass rein theoretisch jedes programm, das mit java erstellt wurde einen äquvialten quellcode besitzt, der das gleiche programm beschreibt, jedoch nur aus den schlüsselwörtern besteht, scheint aber wohl wirklich der fall zu sein
gruß ari :)
|
|
|
|