Java in eingebetteten Systemen

Dieser Artikel befasst sich mit Java in der Echtzeitbranche aus geschäftlicher und technologischer Sicht. In diesem Artikel werden eine technischere Beschreibung einiger Probleme, ein kurzer Überblick über JavaOS und ein kleines Applet für die Autobahnsteuerung erläutert, das einige der Anforderungen zeigt, die JavaOS in Echtzeit aus einer zukünftigen Perspektive erfüllen muss. Das folgende Interview wurde am 12. Juni 1996 elektronisch mit Bernard Mushinsky ([email protected]), Präsident von IPI, geführt. Ich stellte Bernie einige Fragen, weil ich dachte, Java würde sich negativ auf sein Geschäft auswirken, und fand es heraus Java schafft Chancen in Märkten, in denen es möglicherweise einige gut entwickelte Technologien verdrängen kann.

Außerdem habe ich Dr. David Ripps ([email protected]), Vizepräsident für Forschung am IPI, einige Fragen gestellt.

Wir vervollständigen den Artikel mit einer kurzen Diskussion des neu angekündigten JavaOS von Sun Microsystems und einigen Hinweisen auf andere Websites mit URLs von Interesse. JavaSoft hat auch Pläne für eine eingebettete API angekündigt und ernsthafte Entwickler sollten den allgemeinen Status aller APIs überprüfen.

Nun zum Interview ...

Rinaldo: Was ist IPI und was macht es in der Echtzeitbranche?

Bernard: Das MTOS von IPI ist eine Familie von Echtzeitbetriebssystemen, die in eingebetteten Anwendungen weit verbreitet sind. Es gibt mehr als zweitausend Lizenznehmer und viele tausend MTOS-basierte Produkte wurden entwickelt. In der realen Welt sind buchstäblich Millionen eingebetteter Kopien von MTOS in Aktion.

MTOS-Ports sind für die Familien 80x86 und 68xxx, MIPS R3000 / R4000 und PowerPC verfügbar. Zahlreiche Board-Support-Pakete wurden entwickelt und stehen Interessenten zur Verfügung. Dazu gehört ein hochintegriertes System für den 80x86-basierten PC. Dieses System übernimmt den PC und enthält ein DOS-kompatibles Dateisystem und Treiber für alle Standard-PC-Peripheriegeräte. Teil des Standardpakets ist umfassende Unterstützung für Entwicklungs- und Debugging-Software von Drittanbietern sowie IPIs eigener Debugger / Resource Reporter.

MTOS-Anwendungen reichen von einem Gerät zum Mixen von Getränken bis hin zu AWACS und anderen High-End-Produkten. Einige der Hauptproduktbereiche und einige typische Kunden sind nachstehend aufgeführt:

Kommunikationssysteme Alcatel, Ericsson, Fujitsu, GPT, GTE, Motorola, NTT, Philips, Tellabs
Prozesssteuerung ABB, Bristol Babcock, Bailey, GE, Honeywell, Measurex, Toshiba
Fabrikautomation GE, GM, Mitsubishi, Philips, Sony, Toyota
Medizinische Ausrüstung Ciba / Corning, Cobe, Gambro, GEC, Johnson und Johnson, Nova Biomedical, Puritan Bennett, Siemens
Grafik & Bildgebung Datenprodukte, Genicom, IBM, Kodak, Philips, Printronix

Rinaldo: Wie wird sich Java auf das IPI-Geschäft auswirken? Wie werden sich die Picojava-, Microjava- und Ultrajava-Chips Ihrer Meinung nach auf Ihre Branche auswirken?

Bernard: Um diese Frage zu beantworten, muss man davon ausgehen, dass sich Java schnell zu einem System entwickelt, das die Anforderungen des Marktes für eingebettete Systeme erfüllt. Ich sage schnell, denn wenn die Entwicklung zu langsam ist, wird Java wirklich überhaupt nicht dorthin gelangen. Während Java, wie es derzeit besteht, in bestimmten nicht kritischen eingebetteten Anwendungen verwendet werden kann, muss es darüber hinaus in erheblichem Maße gestärkt werden. Es sollte effizienter, robuster und leistungsfähiger sein, was für eingebettete Anwendungen relevant ist. Eines der wirklich unerwünschten Dinge, die um fast jeden Preis vermieden werden sollten, ist die Verbreitung proprietärer Lösungen. Wirklich, Sun sollte sich diesen Problemen stellen und vielleicht durch die Zusammenarbeit mit einem Unternehmen wie IPI den Weg nach vorne finden.

Nachdem ich diese Aussage als Einführung in meine Antwort gemacht habe, werde ich nun die Vorhersage schweben lassen, dass sich Java tatsächlich auf die Art und Weise verbessern wird, die wir uns vorgestellt haben. Unter der Annahme, dass Java sehr weitreichende Auswirkungen haben wird, von denen viele derzeit nicht vorhersehbar sind. Hier sind einige erkennbare Konsequenzen:

  • Nivellierung des Spielfeldes. Dies wird dadurch geschehen, dass, da die Java-Technologie proprietäre Aspekte konkurrierender RTOS-Produkte ersetzt, der Funktionsumfang des proprietären RTOS nicht mehr betont wird. Die Java-Technologie wird viele Tasking-Modelle ersetzen.

  • Eine stärkere Betonung des Netzwerks, das der Java-Umgebung eigen ist. Vereinbarungen von Drittanbietern, die wir jetzt unterhalten, um TCP / IP- und andere Kommunikationspakete bereitzustellen, sind wahrscheinlich weniger wichtig.

  • IPI wird es einfacher, einer größeren Anzahl von Kunden Komplettlösungen anzubieten.

Rinaldo: Welche Änderungen werden Sie an Ihrer aktuellen Produktlinie vornehmen, da Java zunehmend für den Einsatz in Echtzeit in Betracht gezogen wird?

Bernard: IPI integriert jetzt MTOS in Java. Die MTOS-Produkte werden neu gestaltet, um Java-Threads und die verschiedenen Funktionen zu unterstützen, die Java benötigt, um in einer eingebetteten Umgebung zu funktionieren. Darüber hinaus bleiben bestimmte wertvolle MTOS-Funktionen erhalten. Dazu gehört vor allem die Unterstützung mehrerer Prozessoren. Diese Funktion ist für die Anwendung und auch für Java transparent.

Rinaldo: Irgendwelche Ideen, wie groß das Echtzeitsegment des Java-Marktes sein wird?

Bernard: Dies ist keine einfache Frage, zumal die Verfügbarkeit von Java selbst wahrscheinlich erhebliche Auswirkungen auf den gesamten Echtzeitmarkt haben wird.

Der gesamte Markt verfügt über eine Vielzahl von Komponenten, die von einer noch größeren Vielfalt von Anbietern angeboten werden. Geschätzte aktuelle Marktgrößen sind:

  • Anbieter von RTOS-Produkten: 50.000.000
  • Anbieter von Compilern, Debuggern und anderen Tools: 50.000.000
  • Interne "Anbieter von RTOS und anderen Tools: Unbekannt (Die Größe des" internen "Segments wird auf einen Wert geschätzt, der mindestens so groß ist wie der Wert der von den" Anbietern "bereitgestellten Produkte.)

Kann Java einen wesentlichen Teil des Marktes erobern? Wahrscheinlich ja; Offensichtlich werden wir es nicht genau wissen, bis wir mehr Erfahrung haben, auf die wir unsere Vorhersagen stützen können.

Rinaldo: Sie argumentieren, dass Java in eingebetteten Systemen wahrscheinlich eine führende Rolle spielt. Können Sie diese Behauptung rechtfertigen?

Bernard: Diese Frage wird am besten von Dr. David Ripps, IPI-Vizepräsident für Ingenieurwesen, beantwortet. Sein Artikel beschreibt einige der Arbeiten, die derzeit am IPI durchgeführt werden, um eine Plattform bereitzustellen, die Legacy-Echtzeitprodukte in Java integriert.

David: Ich stütze meine Vorhersage auf mehrere Beobachtungen.

Erstens werden viele Programmierer aufgrund der Bedeutung des Web gezwungen sein, Java zu lernen. Schließlich werden die Universitäten in Einführung in Hochsprachenkurse von C auf Java umsteigen. Sobald Programmierer Java fließend beherrschen, möchten sie die Sprache natürlich auf Bereiche außerhalb des Webs anwenden - beispielsweise auf eingebettete (Echtzeit-) Systeme.

Zweitens möchten die Unternehmen, die Echtzeitsysteme entwickeln, die Flexibilität, auf andere Hardware als die zu wechseln, für die das System ursprünglich vorgesehen war. Dies erfordert, dass die Programme über Hardwareplattformen und sogar Befehlssatzarchitekturen portierbar sind. C bot eine gewisse Portabilität. Eingebettete Programme müssen jedoch als eine Reihe von unabhängig ausführbaren Threads oder Aufgaben strukturiert sein. C hat keine solche Ausführungseinheit als inhärenten Teil der Sprache. Es gibt auch keinen gegenseitigen Ausschluss oder eine andere Methode zum Schutz gemeinsam genutzter Daten. Programmierer müssen Threading-, Schutz-, Koordinierungs- und Kommunikationsdienste von einem proprietären Betriebssystem erhalten. Einige Betriebssysteme wie MTOS-UX stellen alle Dienste für eine Vielzahl von CPUs zur Verfügung. Viele Betriebssysteme tun dies nicht. Indem Sie Threading und Datenschutz direkt in die Sprache integrieren,Sie können ein Java-Programm auf eine beliebige (Java-fähige) Plattform portieren, und das Programm funktioniert auf die gleiche Weise. Zumindest im Prinzip.

Rinaldo: Sie sprechen von eingebetteten Programmen oder Echtzeitprogrammen. Was ist Ihre Definition von Echtzeit?

David: Ein Echtzeitsystem ist eines, bei dem zeitliche Einschränkungen, die von der Welt außerhalb des Computers auferlegt werden, eine entscheidende Rolle beim Entwurf und der Implementierung des Systems spielen. Gemeinsame Bereiche für eingebettete Systeme sind Maschinen- und Prozesssteuerung, medizinische Instrumente, Telefonie und Datenerfassung.

Rinaldo: Java scheint für eingebettete Systeme eine Selbstverständlichkeit zu sein.

David: Java ist sicherlich attraktiv als Alternative zu C, ergänzt durch ein Echtzeit-Betriebssystem. Sie zahlen jedoch einen Preis. Java verfügt nicht über zahlreiche Koordinationsprimitive. Der Programmierer ist gezwungen, aus den wenigen integrierten Einrichtungen gemeinsame Koordinationsobjekte wie Postfächer und Mehrbit-Ereignisflaggruppen auf Thread-Ebene zu erstellen. Dies erzeugt Code, der wesentlich langsamer ausgeführt wird als die Bereitstellung solcher Dienste auf Kernelebene.

Rinaldo: Wie sicher sind Sie, dass Java seine Erwartungen erfüllen wird?

David: Die Notwendigkeit eines universellen Programmierstandards besteht seit den Tagen von Fortran. Die Industrie wurde jedoch zuvor durch das Versprechen einer universellen, Echtzeit-fähigen Sprache verbrannt. Ich denke an Ada. Trotz hoher Erwartungen und Regierungsmandate hat Ada C für eingebettete Systeme nie verdrängt. Es ist noch zu früh, um absolut sicher zu sein, dass Java zu einer Kraft außerhalb der Netzwerkprogrammierung wird.

Rinaldo: Wie schnell könnte Java in den eingebetteten Markt eindringen?

David: Es gibt eine enorme Anzahl eingebetteter Systeme, die derzeit in C geschrieben sind. Nur wenige Unternehmen werden diese Investition wegwerfen und alles in Java neu schreiben. Es wird vorsichtige Experimente zur Verwendung von Java für neue Produkte geben, die keinen kritischen Lieferplan haben. Wenn diese Projekte gut funktionieren, werden möglicherweise Hybridsysteme eingesetzt: Mischungen aus altem C-Code und Java-Komponenten. Schließlich werden neue Systeme reines Java sein.

Rinaldo: Können Sie C und Java auf einem eingebetteten Ziel mischen?

David: Ja, aber nur, wenn Ihr Kernel oder Betriebssystem für diese Unterstützung entwickelt wurde. Wenn beispielsweise eine Java-Komponente einen neuen Thread erstellt und eine C-Komponente einen weiteren neuen Thread erstellt, muss das Betriebssystem darauf vorbereitet sein, beide Threads auf kompatible Weise zu behandeln. Andernfalls kämpfen Java-Code und C-Code gegeneinander um die Kontrolle, und das System ist ein Chaos.

Zusammenfassung

Ich habe noch viele Fragen, die nicht untersucht werden konnten, da einige der kritischen Informationen unter JavaOS zum Zeitpunkt dieses Schreibens noch nicht vollständig sind. In zukünftigen Artikeln werde ich versuchen, andere Branchengrößen dazu zu bringen, einige der folgenden Themen zu sprechen und zu demonstrieren:

  • Vergleich der Ausführung einer kritischen Echtzeitaufgabe mit Java, Ada und C / C ++.

  • Lehren aus der ACVC (Ada Compiler Validation Suite).

  • Probleme mit der Akzeptanz von Java als Option für lebensbedrohliche Systeme. Es ist offensichtlich sicherer als C ++ / C (ohne Berücksichtigung der Laufzeit), aber wie würde es mit einem Head-to-Head-Back-Off mit Ada (das die Laufzeit definiert) umgehen? Wird die Referenzimplementierung die Laufzeit detaillierter definieren oder werden Solaris-Threads, Windows 95-Threads, Windows NT-Threads und JavaOS-Threads fünf verschiedene Ergebnisse liefern?

  • Ist die mangelnde Kontrolle mit dem Garbage Collector ein großes Problem für Echtzeitentwickler? Ich verstehe, dass Microsoft den Garbage Collector für sein Produkt in Internet Explorer neu geschrieben hat. Wird es Möglichkeiten für Java-Klassen geben, die die Standardklassen ersetzen? Schließlich werden in einem Echtzeitsystem wahrscheinlich keine Produktivitäts-Apps ausgeführt, oder? Ich denke, die eigentliche Frage ist, ob sich die unzähligen potenziell spezialisierten Implementierungen auf die Portabilität auswirken werden.

  • Wie kann die Java-Community mit schwierigen Problemen umgehen, wie z.

    • Prioritätsinversion
    • Quantenplaner
    • weiche Echtzeit
    • harte Echtzeit

Die Echtzeitwelt kann viel gefährlicher sein als die Webwelt. Finanzielle Verluste sind eine Sache, Verluste sind eine andere und wir sollten uns alle darüber im Klaren sein, dass Java nicht für unternehmenskritische Echtzeitumgebungen entwickelt wurde, aber vielversprechend ist ein Standard in diesem Bereich zu werden.

JavaOS. Was ist es?

JavaOS ist eine Version der Java-VM, die ohne Betriebssystem auf Zielsysteme portiert werden kann. Frühere Versionen von Java haben sich möglicherweise auf das Fenstersystem oder die Netzwerktreiber verlassen, die beispielsweise von Solaris oder Win95 bereitgestellt werden. JavaOS bietet eigene Implementierungen der Netzwerk- und Fensterbibliotheken. JavaOS ist kein traditionelles Betriebssystem, sondern ein Betriebssystem, auf dem nur Java-Hauptprogramme und Java-Applets ausgeführt werden. JavaOS ist ideal für Unternehmen und Einzelpersonen, die Java auf neue Plattformen portieren möchten und dabei das gesamte Gepäck eines herkömmlichen Betriebssystems mitnehmen möchten. Das folgende Whitepaper enthält einige technische Details zu JavaOS und einige hervorragende Folien von JavaOne im Acrobat-Format.

Rinaldo S. DiGiorgio arbeitet für Sun Microsystems als Systemingenieur im New Yorker Büro und demonstriert regelmäßig die Java-Technologie. DiGiorgio arbeitet derzeit an der Integration vieler Technologien in HotJava / Java. Einige dieser Technologien sind Datenbankkonnektivität, Portfoliomanagement, kostengünstiges Video und analytische Anwendungen auf dem Finanz- und aufstrebenden Genetikmarkt. DiGiorgio verwendet seit 1979 Unix-basierte Betriebssysteme, als er Unix-Lösungen in Papierfabriken einsetzte. Er sieht HotJava / Java als die Technologie, um zwei große Kostenfaktoren in der Computerindustrie zu minimieren: Verteilung und Codeentwicklung.

Erfahren Sie mehr über dieses Thema

  • Die TRON-Bemühungen könnten auf nationaler Ebene ein gutes Modell für Java sein. TRON ist eine großartige Anstrengung der Japaner, ein Betriebssystem zu standardisieren. //tron.is.su-tokyo.ac.jp/TRON/
  • Mitsubishis Präsentation (im Adobe PDF-Format) auf der JavaOne-Konferenz war ziemlich interessant. //www.javasoft.com/java.sun.com/javaone/pres/Mitsu.pdf
  • Einige Informationen wurden auf der JavaOne-Konferenz zu Java und eingebetteten Systemen (im Adobe PDF-Format) vorgestellt. //www.javasoft.com/java.sun.com/javaone/pres/Embed.pdf
  • Ankündigung von Anbietern, die neue Chips von Sun Microsystems unterstützen. //www.sun.com/sparc/newsreleases/nr96-059.html

Diese Geschichte "Java in eingebetteten Systemen" wurde ursprünglich von JavaWorld veröffentlicht.