Języki programowania po stronie serwera

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Czym są języki po stronie serwera?

Języki programowania po stronie serwera (ang. server-side languages) służą do tworzenia logiki aplikacji wykonywanej na serwerze WWW, a nie w przeglądarce użytkownika. Serwer odbiera żądanie HTTP od przeglądarki, uruchamia kod aplikacji, ewentualnie komunikuje się z bazą danych, a następnie odsyła klientowi gotowy wynik — najczęściej dokument HTML, dane w formacie JSON lub plik do pobrania.

Infografika: języki programowania po stronie serwera — PHP, Java, C#, Python, Ruby i Node.js, porównanie server-side i client-side oraz typowe dystraktory (AJAX, ActionScript, HTML, CSS)

To podstawowe rozróżnienie w kwalifikacji INF.03 (Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych). W pytaniach egzaminacyjnych bardzo często trzeba rozróżnić język serwerowy od klienckiego albo wskazać, który język NIE działa po stronie serwera.

Server-side vs client-side

Aplikacja webowa zawsze ma dwie strony:

StronaGdzie się wykonujeCo tam działa
klient (front-end)w przeglądarce użytkownikaHTML, CSS, JavaScript
serwer (back-end)na serwerze WWWPHP, Java, C#, Python, Ruby, Node.js

Schemat działania

  1. Użytkownik wpisuje adres URL lub klika link → przeglądarka wysyła żądanie (request) do serwera.
  2. Serwer uruchamia kod w języku serwerowym (np. PHP) — wykonuje logikę, łączy się z bazą danych.
  3. Kod serwerowy generuje dokument HTML (lub JSON / plik).
  4. Serwer odsyła odpowiedź do przeglądarki, która wyświetla stronę użytkownikowi.

Po stronie klienta dalej działa JavaScript — np. obsługuje kliknięcia, walidację formularzy, animacje. Ale danych w bazie modyfikować nie potrafi — musi „poprosić" o to serwer.

Najpopularniejsze języki po stronie serwera

PHP

PHP to najbardziej popularny język serwerowy w klasycznych stronach WWW. Cechy:

  • język skryptowy ogólnego przeznaczenia,
  • zagnieżdżany w kodzie HTML (specjalnymi znacznikami <?php ... ?>),
  • uruchamiany po stronie serwera,
  • używany w popularnych systemach CMS: WordPress, Joomla, Drupal.

To częsta odpowiedź egzaminacyjna: „język skryptowy ogólnego przeznaczenia, zagnieżdżany w HTML, uruchamiany po stronie serwera"PHP.

Java

Java to obiektowy język ogólnego przeznaczenia, używany do:

  • dużych aplikacji biznesowych (banki, ubezpieczenia),
  • systemów backendowych (frameworki: Spring, Jakarta EE),
  • aplikacji mobilnych Android.

Kod kompilowany jest do bytecode'u i uruchamiany przez JVM (Java Virtual Machine).

C# / .NET

C# to język firmy Microsoft, używany głównie z platformą .NET i frameworkiem ASP.NET. Stosowany w:

  • aplikacjach webowych Microsoft,
  • aplikacjach desktopowych Windows,
  • grach (Unity).

Python

Python to język wysokiego poziomu, bardzo popularny w:

  • aplikacjach webowych (frameworki Django, Flask, FastAPI),
  • automatyzacji, skryptach,
  • analizie danych i uczeniu maszynowym,
  • REST API.

Ruby

Ruby najbardziej znany z frameworka Ruby on Rails — platformy webowej preferującej „convention over configuration".

Node.js — JavaScript po stronie serwera

Node.js to środowisko uruchomieniowe pozwalające wykonywać JavaScript po stronie serwera. Powstało, by można było używać tego samego języka i po stronie klienta, i po stronie serwera. Frameworki webowe oparte na Node.js to m.in. Express, NestJS, Next.js.

Node.js bywa „pułapką" w pytaniach egzaminacyjnych — JavaScript klasycznie jest językiem klienta, ale dzięki Node.js może być też serwerowym.

Zestaw języków serwerowych — odpowiedzi egzaminacyjne

W pytaniach typu „Które języki działają po stronie serwera?" poprawny zestaw to najczęściej:

PHP, Java, C#, Python, Ruby (i opcjonalnie Node.js)

To pełen zestaw kandydatów na poprawną odpowiedź. Jeśli w zestawie odpowiedzi jest JavaScript bez kontekstu Node.js — w klasycznych pytaniach NIE jest to język serwerowy.

Co NIE jest językiem serwerowym?

To częsta pułapka w pytaniach. Nie są typowymi językami serwerowymi:

PojęcieCzym faktycznie jest
AJAXtechnika komunikacji przeglądarki z serwerem bez przeładowania strony (Asynchronous JavaScript And XML) — nie język
ActionScripthistoryczny język technologii Adobe Flash (dziś martwej), nie był językiem serwerowym
HTMLjęzyk znaczników opisujący strukturę strony — nie programowania
CSSjęzyk opisu wyglądu — nie programowania
JavaScript (klasycznie)język klienta, działa w przeglądarce; po stronie serwera tylko jako Node.js
SQLjęzyk zapytań do bazy danych — używany przez aplikację serwerową, ale sam w sobie nie jest językiem aplikacji

Front-end / client-side — co tam działa?

Po stronie klienta (front-endu) działa klasycznie:

  • HTML — struktura,
  • CSS — wygląd,
  • JavaScript — interaktywność (bez Node.js).

Jeśli pytanie brzmi „który język jest typowo front-endowy / wykonywany po stronie klienta?" — odpowiedź to JavaScript.

Język + baza danych

Język serwerowy ma dostęp do bazy danych — to jego kluczowa cecha. W aplikacji webowej:

  • PHP + MySQL — najpopularniejsze połączenie (sklepy internetowe, blogi, fora),
  • PHP + PostgreSQL — przez funkcje pg_*,
  • Java + dowolna baza — przez JDBC,
  • Python + dowolna baza — przez SQLAlchemy lub natywne biblioteki,
  • C# + MS SQL Server / dowolna — przez Entity Framework.

Aby obsłużyć połączenie z bazą MySQL podczas tworzenia aplikacji webowej, można użyć m.in. PHP (funkcje mysqli_*), Java (JDBC), Python (PyMySQL, mysql-connector). Więcej w haśle komunikacja aplikacji internetowej z bazą SQL.

Co PHP potrafi, a czego nie?

PHP jest językiem uniwersalnym dla aplikacji webowych — potrafi:

  • generować dynamiczne strony HTML,
  • obsługiwać formularze, sesje, ciasteczka,
  • komunikować się z bazami danych (MySQL, PostgreSQL, SQLite, MS SQL i in.),
  • czytać i zapisywać pliki na serwerze,
  • wysyłać e-maile, generować obrazy, PDF-y,
  • konsumować API zewnętrznych.

Czego nie potrafi robić bezpośrednio:

  • interakcji w przeglądarce bez przeładowania strony — to domena JavaScript (lub AJAX),
  • animacji w czasie rzeczywistym po stronie klienta,
  • bezpośredniej obsługi zdarzeń przeglądarki (kliknięcia, ruchy myszy) — kod PHP wykonuje się na serwerze, zanim strona dotrze do użytkownika.

Stąd typowe pytanie egzaminacyjne: „W języku PHP nie można zrealizować…" — odpowiedzią są zwykle operacje wykonywane po stronie klienta (np. „natychmiastowej walidacji formularza w przeglądarce bez wysłania go do serwera").

CMS Joomla — środowisko serwerowe

System CMS Joomla! jest aplikacją napisaną w PHP. Aby ją uruchomić, potrzebne jest typowe środowisko serwerowe:

  • serwer WWW (Apache, Nginx),
  • interpreter PHP,
  • baza danych SQL (MySQL / MariaDB).

To stos określany jako LAMP (Linux + Apache + MySQL + PHP) lub WAMP/XAMPP w wariancie deweloperskim.

Częste pomyłki — nie myl tego!

  • język serwerowy ≠ język klienta — PHP/Java/Python/C#/Ruby działają na serwerze, JavaScript klasycznie w przeglądarce.
  • JavaScript ≠ Java — to dwa zupełnie różne języki. Java to obiektowy język ogólnego przeznaczenia, JavaScript to skryptowy język webowy.
  • AJAX nie jest językiem — to technika komunikacji asynchronicznej między przeglądarką a serwerem.
  • HTML i CSS to nie języki programowania — to języki opisu (znaczników / stylów).
  • SQL nie jest językiem aplikacji — to język zapytań do bazy danych.
  • ActionScript to nie język serwerowy — to historyczny język Flasha (już niewspierany).
  • Node.js to nie nowy język — to środowisko uruchamiające JavaScript po stronie serwera.
  • PHP nie wykonuje się w przeglądarce — kod PHP wykonuje się na serwerze, do przeglądarki trafia już gotowy HTML (bez kodu PHP).

Najważniejsze do zapamiętania

Języki po stronie serwera to PHP, Java, C#, Python, Ruby (i Node.js dla JavaScriptu). Działają na serwerze WWW, generują HTML/JSON, łączą się z bazą danych. JavaScript klasycznie działa po stronie klienta, w przeglądarce. AJAX to technika, nie język. ActionScript to historyczny język Flash. PHP to język skryptowy ogólnego przeznaczenia, zagnieżdżany w HTML i uruchamiany po stronie serwera — to pełna „etykieta" odpowiedzi egzaminacyjnej.