# Java Software nach C++ portieren



## Jay1980 (10. Okt 2010)

Servus,

ich habe eine Java-Swing-Anwendung gebaut. Es ist nur ein Algorithmus, mit ein paar Paketen und rund 25 Klassen. Jetzt soll ich das nach C++ portieren und frage mich, wie ich das nun machen kann. Interfaces kann ich durch abstrakte Klassen ersetzen, dann muss ich mich noch schlau machen, dass mir bei den Pointern keine Schnitzer unterlaufen, vielleicht finde ich dafür ja sogar eine externe Bibliothek, die mir einen Garbage-Collector für C++ spendiert. Aber ich frage mich gerade wie ich die Paketstruktur nach C++ bringe? Header-Files und Namespaces kommen mir da in den Sinn, aber ich fand bis jetzt keinen Artikel, bei dem das Vorgehen da genauer beschrieben wurde - kann mir da einer weiterhelfen?

Danke vorab.


----------



## Runtime (10. Okt 2010)

```
namespace a {

}

namespace b {

}
```
irgendwie so und ich galube man kann einfach alles ins selbe Verzeichnis werfen, genaueres kann dir noch Google sagen:
namespace c++ - Google-Suche


----------



## andiv (10. Okt 2010)

Versuch bitte nicht deinen Javacode eins zu eins nach C++ zu "übersetzen", denn das wird garantiert schiefgehen. Auch wenn die Syntax der beiden Sprachen sehr ähnlich aussieht, so unterscheiden sich die beiden konzeptionell doch gewaltig! Wenn du das Programm wirklich in C++ brauchst, dann entwickel es in C++ neu. Da hast du langfristig (Lerneffekt, Wartung, etc.) mehr davon.


----------



## Runtime (10. Okt 2010)

Warum willst du es überhaupt in C++ übersetzen?


----------



## Jay1980 (10. Okt 2010)

Der Betreuer will es in C++, aber da ich mich in Java heimisch(er) fühle, habe ich den Algorithmus erstmal dort runtergeschrubbt und nun muss ich es halt nach C++ bringen.


----------



## Runtime (10. Okt 2010)

Betreuer == Lehrer?


----------



## andiv (10. Okt 2010)

1. Du könntest noch einmal mit deinem Betreuer (Schule, Uni, Arbeit?) reden, damit er vielleicht doch eine Java-Implementierung akzeptiert.

2. Wie gut kennst du dich mit C++ aus? Einen Garbage-Collector brauchst du nicht. Versuche so oft wie möglich deine Objekte auf dem Stack (ohne new!) anzulegen, wo nötig verwende RAII (Resource Acquisition is Initialization) und Smartpointer (std::tr1::scoped_ptr, std::tr1::shared_ptr, ...). Wenn du eine Bibliothek schreibst könntest du alle deine Klassen in einen namespace packen, andernfalls kannst du auf eigene namespaces auch ganz verzichten.

3. Mit welcher IDE und welchen Bibliotheken arbeitest du? Die C++-Standardbibliothek ist nichtmal ansatzweise so umfangreich wie das was du von Java gewohnt bist. Falls du eine GUI brauchst solltest du dir mal Qt anschauen, die Bibliothek ist recht umfangreich und als Java-Erfahrener solltest du damit auch recht gut zurechtkommen.

4. Wenn du mit C++ noch wenig Erfahrung hast, dann leih dir ein Buch aus der Bibliothek aus (Die C++-Programmiersprache, C++ Primer, etc.) und überflieg es (damit du wenigstens die Möglichkeiten mal gesehen hast und ein Nachschlagewerk zur Hand hast). Versuche nicht Code 1 zu 1 zu übersetzen, sondern gehe das ganze nochmal neu an. Wer versucht in C++ Java zu programmieren, wird fast immer schlechten C++-Code produzieren (selbes gilt für C++-Programmierer die versuchen in Java C++ zu programmieren). Für zukünftige Projekte bei diesem Betreuer kannst du dir dann auch die Vorarbeit in Java sparen und im Berufsleben kann es nie schaden mehr als eine Sprache zu können.


----------

