Deno 2.0 vs Node.js vs Bun: выбираем JavaScript-рантайм в 2026
В 2026 году у JavaScript-разработчика три рантайма на выбор: проверенный Node.js, амбициозный Deno 2.0 и скоростной Bun. Каждый решает свои проблемы и имеет свои компромиссы. Разбираемся, что нового в каждом, сравниваем бенчмарки и определяем, когда какой рантайм выбрать.
Deno 2.0: npm-совместимость и permissions
Deno 2.0 решил главную проблему первой версии — несовместимость с npm-экосистемой. Теперь npm-пакеты работают из коробки:
// deno.json — конфигурация проекта
{
"imports": {
"express": "npm:express@4",
"zod": "npm:zod@3"
},
"tasks": {
"dev": "deno run --watch --allow-net main.ts",
"test": "deno test"
}
}
// main.ts — обычный Express-сервер
import express from "express";
const app = express();
app.get("/", (req, res) => res.json({ runtime: "deno" }));
app.listen(3000);
Ключевые фичи Deno 2.0:
- npm-совместимость — npm: спецификатор, package.json поддерживается, node_modules опционально.
- Permissions — гранулярный контроль: --allow-net, --allow-read, --allow-env. Скрипт не получит доступ к файловой системе без явного разрешения.
- Встроенный тулинг — formatter, linter, test runner, LSP, task runner — всё из коробки.
- TypeScript без конфигурации — .ts файлы выполняются напрямую.
Bun: скорость как главная фича
Bun написан на Zig с использованием JavaScriptCore (движок Safari) вместо V8. Результат — рекордная скорость запуска и выполнения:
// bunfig.toml — конфигурация
[install]
cache = true
// server.ts — встроенный HTTP-сервер
Bun.serve({
port: 3000,
fetch(req) {
return new Response(JSON.stringify({ runtime: "bun" }), {
headers: { "Content-Type": "application/json" },
});
},
});
// Встроенный SQLite
import { Database } from "bun:sqlite";
const db = new Database("app.db");
db.run("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");
// Встроенные тесты
import { test, expect } from "bun:test";
test("2 + 2", () => expect(2 + 2).toBe(4));
Что даёт Bun:
- Скорость запуска — в 4-5x быстрее Node.js. Критично для CLI, serverless, скриптов.
- Встроенный bundler — замена esbuild/webpack для простых случаев.
- bun install — установка пакетов в 10-25x быстрее npm.
- Встроенный SQLite, тесты, .env — меньше зависимостей.
Node.js 22: эволюция без революции
Node.js не стоит на месте. Ключевые изменения в версиях 22-23:
// require() теперь работает с ESM-модулями
const { z } = require("zod"); // ESM-пакет через require — работает!
// Type stripping — .ts файлы без компиляции (экспериментально)
// node --experimental-strip-types app.ts
// Permission model (экспериментально)
// node --experimental-permission --allow-fs-read=/app app.js
// Встроенный watch mode
// node --watch app.js
// Встроенный test runner (стабильный)
import { test } from "node:test";
import assert from "node:assert";
test("сложение", () => {
assert.strictEqual(2 + 2, 4);
});
Node.js движется в сторону Deno/Bun: TypeScript-поддержка, permissions, встроенные тесты. Но делает это постепенно и с обратной совместимостью.
Бенчмарки: HTTP, startup, install
Метрика | Node.js 22 | Deno 2.0 | Bun 1.2
─────────────────────────────────────────────────────────
HTTP RPS (hello) | 95K | 110K | 160K
Startup time | 35ms | 25ms | 7ms
Install (1000 deps) | 28s | 18s | 3s
Bundle (React app) | esbuild 0.8s| — | 0.6s
TypeScript exec | tsx: 180ms | native 25ms| native 8ms
Memory (idle server) | 45 MB | 38 MB | 32 MB
Bun лидирует по скорости почти везде. Deno быстрее Node.js и предлагает лучший DX. Node.js — самый стабильный и совместимый.
Когда какой рантайм выбрать
Node.js — выбор по умолчанию для продакшена:
- Максимальная совместимость с npm-экосистемой.
- Все библиотеки протестированы на Node.js.
- Зрелый APM, мониторинг, debugging.
- Огромное сообщество и рынок труда.
Deno 2.0 — для новых проектов с фокусом на безопасность:
- Permissions по умолчанию — безопаснее для серверов.
- TypeScript из коробки без tsconfig/tsx.
- Deno Deploy — serverless-платформа с edge-рантаймом.
- Хорош для API-серверов, CLI-утилит, скриптов.
Bun — для скорости и developer experience:
- Serverless/edge — startup time критичен.
- Монорепо — bun install экономит минуты в CI.
- CLI-утилиты — мгновенный запуск.
- Осторожно в продакшене: моложе, меньше battle-tested.
Вывод
В 2026 году все три рантайма жизнеспособны. Node.js остаётся safe choice для enterprise. Deno 2.0 — лучший DX с npm-совместимостью. Bun — рекорды скорости, но моложе. Хорошая новость: код на TypeScript переносится между ними с минимальными изменениями. Выбирайте под задачу, а не по хайпу.