die Datenbank willst du sicher nicht selber programmieren, also ist die irgendwie da und will angesprochen werden,
wie man mit der spricht kann ich spontan nicht sagen,
wahrscheinlich braucht man als Mindestmaß einen Socket und muss in irgendeinem Protokoll mit ihr reden,
etwas höhere wäre in Java ein JDBC-Treiber,
was davon nun Middleware ist, ist Interpretationssache, nach der Wikiseite sind es passive Netzwerkprotokolle nicht,
wenn J2EE dazugehört, dann schätze ich, dass das für einen JDBC-Treiber auch gilt, der doch ebenso einfache Java-Kommandos in komplexe Netzwerk-Nachrichten umwandelt,
für einen Socket, der ohne Murren fertige Netzwerknachrichten weiterreicht, gilt das wohl wieder nicht, meiner Meinung nach, aber reine Interpretation,
denkbar wäre, deiner hochspezifischen Frage folgend, diese Kommunikation als nicht 100%-Middleware-verlangend zu deklarieren
Server-Client: kommt drauf an, was für Clients, ob Java-Programme oder Browser,
im ersten Fall wäre wiederum eine direkte Socket-Kommunikation möglich, einfache Strings könnten zum Austausch von Informationen reichen,
höherwertig wäre alles, was Middleware zu bieten hat, WebServices, RMI usw.,
wiederum allgemeine höhere Tools, die Daten umwandeln und Methoden-Aufrufe deligieren
für den Browser gibts J2EE, fast schon zu hoch meiner Meinung nach, sehe ich eher als Programmiersprache für Web-Anwendungen, aber der Wiki-Seite und deinem Post nach auch Middleware,
alternativ reicht beim Server ein einfacher Socket, der das HTML selber interpretiert und zurückschickt,
auch hier Middleware nicht 100% nötig, jede Art von Kommunikation zwischen Programmen erwartet letztlich nur Netzwerk-Nachrichten in einem bestimmten Protokoll,
-----
wenn allerdings ein Programm nur RMI-Nachrichten empfängt und zurücksendet, und das selbstgebaute Gegenüber die Nachrichten Bit für Bit ohne RMI auf seiner Seite zusammensetzt,
dann kann man vielleicht immer noch sagen, dass Middleware zwingend beteiligt ist..