Ist java oder php schwerer?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hello there,

zum Erlernen ist PHP deutlichst einfacher als Java.

Du musst dir aber auch überlegen, was du gerne machen möchtest. Wenn du Webseiten programmieren möchtest, ist für dich PHP definitiv die bessere Wahl. Mit Java lassen sich zwar Webseiten auch programmieren, aber diese Technik ist sehr wenig verbreitet und tritt gegenüber PHP- oder ASP.NET basierten Webseiten sehr deutlich in den Hintergrund.

Java ist eine Sprache, die vor allem auf die Programmierung von Anwendungen ausgelegt ist. Dabei geht es zum einen um Programme und Spiele, aber insbesondere in der heutigen Zeit um Apps für Googles Betriebssystem Android auf dem Smartphone. Diese sind in der Regel in Java (in Ausnahmefällen auch in C) geschrieben.

Ihre Stärke ist die Plattformunabhängigkeit, da sich auf fast jedem System eine Javalaufzeitumgebung installieren lässt, die dann deinen Javacode ausführen kann. Eine weitere Stärke ist die Robustheit des Codes, Javacode ist, wenn er gut programmiert ist, wenig anfällig für Fehler und Abstürze.

Eine große Schwäche sind die vielen Sicherheitslücken im Sprachkern, durch die Java immer wieder in Kritik gerät, gerade im Bezug auf Browserplugins in Java, wie etwa das browserbasierte Minecraftwidget.

Dennoch gibt es tausend Gründe, warum PHP deutlich einfacher ist. Ich nenne einfach mal ein paar....

  • PHP ist eine implizite, dynamisch typisierte Sprache, Java ist eine explizite, statisch typisierte Sprache. Zu deutsch: In PHP musst du Variablen weder vor der Verwendung deklarieren, noch einen Datentyp wie etwa Text oder Zahl erzwingen. Dieser kannautomatisch bestimmt werden, in Java musst du jede Variable vor der Verwendung zunächst deklarieren und auch bei der Deklaration einen Datentyp zuweisen, sonst funktioniert es nicht.
  • PHP ermöglicht rein prozedurale Programmierung. Das heißt du kannst im Skriptstil Code schreiben, der dann abgearbeitet wird. In Java geht das nicht, du bewegst dich immer innerhalb von Objekten, das ist häufig etwas verwirrend. Allerdings bietet PHP trotzdem die Möglichkeit Objekte zu programmieren, das ist auch sinnvoll.

  • PHP hat bereits in der Sprachdefinition zahlreiche Möglichkeiten, wie eingebaute Funktionen und Klassen. In Java kannst du Out of the Box fast gar nichts machen. Du musst für alle Funktionalitäten, bis auf die reinen Sprachkonstrukte, die benötigten Klassen in dein Skript importieren. Sie werden dir zwar schon mitgeliefert, aber um sie zu verwenden, müssen sie alle importiert werden und du musst genau wissen, in welcher Datei die von dir benötigten Funktionalitäten drin stehen, um sie dann einzbinden.

  • PHP hat einige Sprachkonstrukte, die man als "syntaktischen Zucker" bezeichnen könnte, das heißt du kannst Dinge recht schlank darstellen, die in Java nur sehr aufwändig zu beschreiben sind. Ein einfaches Beispiel ist die Darstellung einer Klassenkonstanten:

PHP:

const foo = 1;

Java

private static final int foo = 1;

Java hat vor allem für fortgeschrittene Programmierer aber auch ein paar nützliche Funktionen zur Hand, etwa die sogenannten Checked Exceptions. Um Fehler im Programmablauf zu handlen, bedient man sich der sogenannten Ausnahmebehandlung (Exception Handling). Die Idee ist, Fehler abzufangen und sie weiterzuverarbeiten, damit das Programm nicht abstürzt. Java bietet eine Möglichkeit durch Definition der zu erwartenden Ausnahme die Ausnahme dann automatisch abzufangen, in PHP müsstest du die Ausnahmebehandlung komplett selbst schreiben.

Ein weiteres Goodie von Java ist die sehr einfach Möglichkeit, Code aus anderen Programmiersprachen einzubinden, dazu kennt Java das Konzept der "nativen Methoden".

Das sind allerdings alles Dinge, die für dich als Anfänger absolut uninteressant sind.

Mein Tipp: Fang erst mal mit PHP an, für den Anfänger ist das eine der einfachsten Sprachen und PHP kann mittlerweile in der Version 5.6 fast alle wichtigen Konzepte der Programmierung umsetzen, du lernst fast alles, was du dann für den Einstieg in Java verwenden kannst. Außerdem hast du mit PHP schon ne ziemliche Nähe zu Datenbanken, diese sind ein sehr sehr interessantes Thema, das ungeahnte Möglichkeiten im modernen Internet und auch in Firmenenetzwerken bietet.

Hoffe ich konnte dir helfen, dann würd ich mich über einen Stern freuen

MfG

Alex

jameslover2015 
Fragesteller
 20.11.2014, 14:34

Vielen dank für eine so ausführliche antwort!

1
TeeTier  21.11.2014, 02:39

Mmmh ... kann man alles so nicht stehen lassen. Nichts Halbes und nichts Ganzes.

Dennoch gibt es tausend Gründe, warum PHP deutlich einfacher ist. Ich nenne einfach mal ein paar....

Es gibt genauso viele Gründe, warum man Java anstelle von PHP lernen sollte ... ohne den Rahmen sprengen zu wollen:

PHP hat z. B. keine enums, bzw. diese müssen mithilfe von Klassen simuliert werden, was äußerst unschön ist:

abstract class Foo {
    const bar = 0;
    const baz = 1;
}

In Java hingegen:

Foo { bar, baz }

Wie du siehst kann man beliebig viele Beispiele an den Haaren herbei ziehen, in denen Sprache A besser da steht als Sprache B. :)

Zum Beispiel hat PHP immer noch massiv Probleme mit der Unicode-Unterstützung (die teilweise überhaupt nicht, und wenn, dann nur marginal vorhanden ist)! Das ist in meinen Augen ein viel größeres KO-Kriterium, als wenn man jetzt einer Konstanten "final" & Co voranstellen muss.

0
Alextoexplain  21.11.2014, 11:22
@TeeTier

Ganz ehrlich, ich finde man kann enums letztlich in PHP auch über ne Eigenschaft darstellen, die einfach einen numerischen Array mit Werten darstellt. Und Java kann das auch erst seit Version 5 *g

Und Unicode-Unterstützung? Wo? Meine Seiten werden im Zusammenhang mit Datenbanken immer korrekt dargestellt, wenn ich mysqli_set_charset verwende.

Aber gut letztlich gehts hier auch nicht um die Stärken und Schwächen, sondern um die Benutzerfreundlichkeit für Anfänger. Und nen Anfänger braucht nunmal in der Regel erst mal keine Enums, der ist froh, wenn er nen Programm das funktioniert mit wenig Einstiegsarbeit schreiben kann. Und da ist PHP nunmal besser, da muss ich nicht diskutieren.

0

Schwerer zu erlernen ist auf die Dauer immer das, was Dich weniger begeistert. Auch das Schwierigere kann leichter fallen, wenn es mehr Sinn ergibt und Freude macht. Was das für Deine Frage bedeutet, hängt davon ab, was Du mit der Programmierung für Sachen vorhast. Aber vielleicht hast Du ja noch keine Pläne damit und willst einfach nur mal in die Programmierung einsteigen. Dann schlage ich vor, daß du einfach mal in PHP, Java und/oder eine der Sprachen hineinschnupperst, die TeeTier unter PS genannt hat. Du wirst dabei auf jeden Fall dazulernen und herausfinden, was Dich interessiert und wo Du Lust hast, tiefer einzusteigen.

Hey there,

hab übrigens noch ne schöne Veranschaulichung dazu, warum PHP so viel einfacher ist.

Auftrag: Erstellen Sie ein Programm, dass "Hallo" auf der Standardausgabe ausgibt:

PHP:

echo "Hallo";

Fertig. Um das Ganze in Java als gültiges Programm zu schreiben, das auch wirklich sicher funktioniert, schaut das Ganze bisschen umfangreicher aus, obwohl es letztlich das Gleiche macht... -.-

Java:

package demopaket
import java.io.*;

class SagHallo
{
    public static void main (String[] args) 
    {
        System.out.println("Hallo");
    }
}

Übrigens, in diesem Fall müsste deine Codedatei zwingend "SagHallo.java" heißen sonst würde auch wieder nichts funktionieren ;) muss man auch wissen *g

MfG

Alex

Alextoexplain  20.11.2014, 18:31

Erklärung:

  1. Zeile: Ein Javaquellcode muss immer einem Paket zugewiesen sein, zudem es gehört. Nötig.
  2. Zeile. Einfach so was ausgeben kann Java von Haus aus nicht. Es benötigt das Paket Java Input/Output, das unter anderem die Klassen enthält, die System.out darstellt.
  3. Wie gesagt, kann man in Java nicht prozedural programmieren, sondern muss sich immer in einer Klasse befinden. Daher also noch ne Klasse erstellen.
  4. Die deklarierte Methode main muss genau so aussehen, da sie den Einstiegspunkt des Javaprogramms darstellt. Wenn also der Compiler, der das Programm liest, anfängt zu arbeiten, sucht er den Code nach dieser Methode ab und weiß, dass er da anfangen muss.
  5. Die einzige Zeile, die produktiv was macht, ist die Zeile, die mit System.out beginnt. Diese weist Java an, auf der Konsole etwas auszugeben, in dem Fall Hallo. Nur dass es da nicht einfach mit einem kleinen Sprachkonstrukt namens "echo" getan ist, sondern man muss zunächst den Namespace System aufrufen, darin dann die Klasse out, und da dann wiederum die Methode PrintLine, kurz println().

Schick oder? ;)

0
TeeTier  20.11.2014, 23:14
@Alextoexplain
Zeile: Ein Javaquellcode muss immer einem Paket zugewiesen sein, zudem es gehört. Nötig.

Fällt zumindest bei der Webprogrammierung (wofür PHP in 99% der Fälle eingesetzt werden dürfte) mit JSP einfach weg.

Einfach so was ausgeben kann Java von Haus aus nicht. Es benötigt das Paket Java Input/Output, das unter anderem die Klassen enthält, die System.out darstellt.

Standardausgabe ist in diesem Falle bei PHP "echo" und bei Java einfach nur ein "=" ... da muss auch nichts für eingebunden werden!

Wie gesagt, kann man in Java nicht prozedural programmieren, sondern muss sich immer in einer Klasse befinden. Daher also noch ne Klasse erstellen.

Du kannst auch mit Java einen Blob in "main" schreiben und ausschließlich statische Methoden deklarieren, bzw. ausschließlich statische Imports benutzen benutzen ... Ob das nun Schick ist, ist eine andere Frage. Darüber hinaus dürfte OOP der prozedualen Programmierung in nahezu jeder Hinsicht überlegen sein. Und auch in PHP sollte man OOP einsetzen, wenn man die Möglichkeit dazu hat. (Von einem Dreizeiler mal abgesehen!)

Die deklarierte Methode main muss genau so aussehen, da sie den Einstiegspunkt des Javaprogramms darstellt. Wenn also der Compiler, der das Programm liest, anfängt zu arbeiten, sucht er den Code nach dieser Methode ab und weiß, dass er da anfangen muss.

Bei PHP wird auch immer am Anfang der Skript-Datei mit dem Interpretieren angefangen und nicht irgendwo mitten drin. Egal um welche Programmiersprache es sich handelt, der Compiler / Interpreter benötigt IMMER einen Einstiegspunkt! Ob der nun in Form von einer main-Methode vorliegt, oder den Anfang des Skriptes darstellt, ist doch egal. Und wenn man es genau nehmen will, hat beides Vor- und Nachteile. Es ist einfach ein anderes Konzept ... das kann man doch nicht vergleichen! :)

Die einzige Zeile, die produktiv was macht, ist die Zeile, die mit System.out beginnt. Diese weist Java an, auf der Konsole etwas auszugeben, in dem Fall Hallo. Nur dass es da nicht einfach mit einem kleinen Sprachkonstrukt namens "echo" getan ist, sondern man muss zunächst den Namespace System aufrufen, darin dann die Klasse out, und da dann wiederum die Methode PrintLine, kurz println().

Wie ich bereits in meinem anderen Beispiel gezeigt habe, benutzt man bei der Webprogrammierung einfach nur "=" anstatt "System.out.println" oder der Gleichen.

Genauso könnte man argumentieren, dass man in PHP anstelle von "echo" auch ...

<?php fputs(STDOUT, "Hallo"); ?>

... schreiben könnte, was genau das Selbe tut!

Da Java wesentlich mächtiger ist, als PHP wählt man eben immer seine Ansätze anhand der vorliegenden Problemstellung aus. Und wenn die Problemstellung "Website" lautet, dann wird heutzutage niemand mehr mit Servlets programmieren, sondern die Arbeit den JSP-Tags überlassen. :)

0
Alextoexplain  21.11.2014, 11:29
@TeeTier

Fakt ist, dass du dennoch alle Aspekte benötigst. Dass das einfach zum Sprachdesign gehört, mag ja sein, aber es sind alles Dinge, die jemand, der es lernt, wissen muss.

Dein Problem ist, dass du von der Seite einer Person denkst, für die das alles Routine ist :)

Ich habe in meinem Fall jetzt auch nur Standardjava vorgeführt, weil ich erstens von Java in Kombination mit JSP absolut keine Ahnung habe, sondern nur weiß, was es ist, und zweitens javabasierte Webseiten einfach zu wenig verbreitet sind und wenig Vorteile gegenüber den herkömmlichen Verfahren bieten :)

Dass man nur rein statisch arbeiten kann, ist mir schon bewusst, aber letztlich muss ich ja dennoch ne Klasse deklarieren.

Worauf ich hinaus wollte - du hast definitiv recht, dass man auch in PHP mit Klassen arbeiten sollte ist - ist, dass ein Anfänger sich nicht sofort mit Klassen und Objekten befassen muss, er kann auch erstmal drauf los schreiben, ohne komplexe Strukturen befolgen zu müssen, damit überhaupt was klappt :) In PHP kann ich einfach Befehle hinschreiben, die abgearbeitet werden. in Java muss ich mich mit statischen und dynamischen Kontexten, Datentypen und strukturierter Programmierung von der ersten Zeile ab auseinander setzen.

Weißt du, ich hab das Glück gehabt, ich bin Systemintegrator, meine erste Sprache war PowerShell.....DAS nenne ich einsteigerfreundlich *g. Da muss man fast gar nichts berücksichtigen. Klassen gibts eh nicht und wenn man nicht grad Syntaxfehler drin hat, geht da eigentlich immer alles^^ die Sprache ist idiotensicher und dennoch mächtig ;D

Ich sehe immer nur alles im Bezug auf Einsteigerfreundlichkeit. Da ich selbst Einsteiger in Java, aber schon fortgeschritten in PHP bin, kann ich schon recht gut abschätzen, was komplizierter ist :)

0
TeeTier  20.11.2014, 22:54
Ohhhh ... sorry, aber das Beispiel hinkt mir etwas zu sehr, als dass ich es durchgehen lassen könnte! :)

Also ... erstmal der korrekte PHP Code, den man exakt so in eine Datei schreibt, und ohne weitere Änderungen auch ausführen kann (und zwar ohne die Hälfte weg zu lassen):

<?php echo "Hallo"; ?>

Und jetzt die Java-Version, die man EXAKT so und nicht anders auch auf dem Server beim Bau einer Website einbinden würde:

<%= "Hallo" %>

Fazit: Java ist definitiv kürzer als PHP! :)

Im Übrigen kann man - wenn man Erbsen zählen möchte - auch einfach folgendes in eine Datei schreiben:

Hallo

Das wird sowohl von PHP als auch von Java korrekt "interpretiert" (oder besser gesagt "nicht interpretiert") und gibt ebenfalls einfach nur das Wörtchen "Hallo" aus! :)

Was lernen wir daraus? ... Man kann jedes Beispiel bis zur Unendlichkeit aufblähen um zu "beweisen", dass Sprache A besser / schneller / leichter als Sprache B ist. :)

0
Alextoexplain  21.11.2014, 11:31
@TeeTier

Tz tz tz, Java Server Pages ist nicht Java :) dann könnte ich auch einfach in nem PHP Skript

<p>Hallo</p>

schreiben und wäre wieder kürzer als du, weil auch normaler HTML-Code ist inner PHP-Datei gültig (inner JSP-Datei auch? Weiß ich nicht :/), jetzt werd mal nicht spitzfindig :P

0
TeeTier  21.11.2014, 23:07
@Alextoexplain

Also ...

<p>Hallo</p>

ist auch in einer JSP-Datei gültig. :)

Alles was bei PHP außerhalb von

<? ... ?>

steht, kann in JSP auch außerhalb von

<% ... %>

stehen. :)

1

PHP mag für Anfänger marginal einfacher sein, aber Java ist deutlich mächtiger und wesentlich besser durchdacht! (auch wenn man hier teilweise auf unlogische Entscheidungen trifft)

Im Grunde genommen kannst du all das, was du mit PHP machen kannst, auch mit Java machen, aber mit PHP nur einen Bruchteil dessen, wozu du mit Java in der Lage bist.

Dennoch sind PHP-Server unglaublich billig bei jedem Shared-Hoster verfügbar, wobei man bei Java schon etwas länger suchen muss und evtl. deutlich mehr bezahlt.

Man kann zwar sowohl mit Java, als auch mit PHP grottenschlechten Code schreiben, aber im Großen und Ganzen lässt es sich mit Java wesentlich ordentlicher Programmieren. Dennoch hat PHP seine Daseinsberechtigung, wenn man weiß, was man tut, aber das gilt ja sowieso für alle Sprachen.

Wenn du vor hast Programmieren zu lernen, und du nur zwischen Java und PHP wählen möchtest, dann rate ich dir eindeutig zu Java. PHP verleitet gerade Anfänger zu leicht zum Pfusch! Wenn du Java ausreichend beherrschst, solltest du aber dennoch zusätzlich PHP lernen!

Es lohnt sich wirklich, beide zu können! :)

PS: Je nachdem, was du machen möchtest, ist evtl. Python, Ruby oder sogar Perl auch interessant für dich! :)

Ich würde mal sagen, Java ist schwerer, da es meiner Meinung nach vielfältiger ist.