Bin gerade in der Werkstatt. Werde dir, sobald ich zuhause bin die Gründe per PN schicken und hier editieren.
Ist aber echt angenehm und im Beruf brauch ich Delphi was gut zusammenpasst. Java finde ich allgemein nicht so toll, was persönliche Präferenzen jetzt aber sind. Wie gesagt, genaue Antwort kommt bald...
EDIT:
Vorab aber schon einmal: Delphi (bzw. die Entwicklungsumgebung) kostet Geld. Diesen Nachteil will ich dir nicht vorenthalten (

). Dafür ist die Entwicklungsumgebung ziemlich mächtig finde ich. Vor allem wenn man diese mit Java IDEs vergleicht. Das ist ein rein persönliches Gefühl, welches sich, wie ich finde, schwer in Worte fassen lässt. Jedoch kenne ich sowohl vom Studium als auch der Arbeit/Ausbildung genug Entwickler, die das Selbe denken. So mächtig wie Visual Studio ist es nicht ganz, aber es gibt doch einige nette Features.
Zur Geschichte von Delphi: Delphi basiert auf den Pascal Syntax, ist vollkommen Objektorientiert und nativ. Wenn man von deiner kompilierten Binary an den Quellcode will reicht kein einfaches Decompilen wie bei Java oder .Net. Zudem stellt dies auch einen enormen Performencevorteil gegenüber Java dar.
Nachteil dessen ist, dass du dich selber um den Speicher bzw. das freigeben nicht verwendeter Objekte kümmern musst, welches aber nicht sonderlich schwierig ist.
Den Syntax habe ich zuvor schon angemerkt: Er unterscheidet sich stark von dem, was man von Java, C#, C, etc. kennt. Er ist stark "sprechend" und mathematisch. Ein Scope wird nicht durch { } eingeschlossen, sondern durch die Schlüsselworte
begin und
end. Operatoren sind := bei Zuweisungen, = ist ein Vergleichsoperator, was auch einen Unterschied zu den anderen Sprachen darstellt.
Ich zeig dir am besten einmal 2 kleine Snippets einer Funktion die etwas tut :P
Code:
public String toString()
{
String s = "";
for(int i = 0;i < 10; i++)
s += i;
return s; //Code nach einem Return wird nicht mehr ausgeführt
}
Code:
function ToString: String;
var
s: String;
i: Integer;
begin
s := '';
for i := 0 to 10 do
s = s + IntToStr(i);
Result := s //Result ist eine Variable mit dem Rückgabewert. Nach dem Setzen wird die Funktion NICHT abgebrochen
end;
Zum Delphi Quellcode: Bevor hier welche kommen es gibt keinen Modifizierer im Snippet etc. Solche Sachen sind im Prototypen definiert. Wer nicht weiß was ein Prototyp ist: Google ist euer Freund.
Bzgl Freigabe von Objekten hier noch einmal ein kleiner Vergleichscode:
Code:
private void myFunction()
{
Object o = new Object();
//tue etwas mit dem Objekt
//lass das Objekt vergammeln bis der Garbage Collector mal die Laune hat es weg zu räumen
}
Code:
procedure MyProcedure;
var
o: TObject;
begin
o := TObject.Create;
try
//tue etwas mit dem Objekt
finally
FreeAndNil(o); //Variante 1: Gibt den Speicher frei und setzt das Objekt nil
o.Free; //Variante 2: Gibt den Speicher frei, danach ist das Objekt undefiniert
end;
end;
Ist also nicht sonderlich viel und es gibt gewisse Tools wie z.B. madExcept die dir zur Not dabei helfen leaks zu finden
Bzgl. dem programmieren. Ich weiß nicht mehr wirklich wie man Android in java programmiert, da ich mich nur damit einmal kurz befasst habe vor längerer Zeit. Allg. bietet Java keine direkte Möglichkeit die Oberfläche zu designen. Dies geschieht soweit ich weiß durch Plugins ide einen Designer bereitstellen, die mehr oder weniger gut funktionieren, oder per Code.
Hier kommt Delphi ins Spiel: Es gibt genau wie in Visual Studio einen professionellen, in die IDE integrierten Designer, welcher den Code dazu automatisch erstellt und in einer separaten Datei speichert (ähnlich wie bei Visual Studio die partial class). Und jetzt das, ich bin mal mutig, geile: Durch FireMonkey (Delphis MultiDevice Bibliothekt), ist es möglich, ein Programm zu schreiben, einmal zu designen in einer Master View und auszuprogrammieren und anschließend zu kompilieren. Dabei kann dynamisch zwischen diversen Endgeräten wie Win32, Win64, iOS, Android gewechselt werden: Man programmiert einmal, und hat eine Anwendung für diverse Plattformen.
Falls jetzt stimmen kommen mit einmal Designen und für alles verwenden kann nicht gut gehen: Ja, das stimmt. Dafür gibt es den vorhin genannten Master View. Diesen kann man umschalten auf ein Gerät (bei Android inkl. Bildschirmgröße), und kann dort die Komponenten individuell auf die Bildschirmgrößen anpassen/umplatzieren ohne das der Quellcode verändert werden müsste. Dies erlaubt auch das einhalten von Style Konventionen für die Endgeräte.
Dazu kannst du dir am besten mal Videos von Embarcadero angucken.
Das waren so einige Punkte die ich toll finde an Delphi.
Falls ich abgeschrekt habe (was ich mir auch vorstellen kann

), kann ich auch beruhigen: Aus der Schule, dem Studium und privat war ich Sprachen wie C, C#, Java, php gewöhnt, welche alle doch einen sehr ähnlichen Syntax haben.
Für die Arbeit musste ich mich in Delphi einarbeiten; erstes mal selber um den Speicher kümmern, neuer Syntax, neue IDE. Aber es lohnt sich und ist weniger schlimm als man denkt und man lernt die Vorteile wirklich lieben.
Nachtrag: Falls in den Java Teilen, welche sich auf Android richten, wir das mit dem Designer, Fehler sind, bzw. es da einen neueren Stand gibt, lass ich mich gerne belehren. Was Java für Android angeht ist es sehr lange her, dass ich mich damit mal auseinander gesetzt habe.