当前位置: 首页 > news >正文

Bun.js 集成了 SQL/Redis/S3,为什么 Java/Go/Python 不集成?

先看最小代码:

import{sql, RedisClient}from"bun";// PG,自带 constusers=await sql`SELECT * FROMusersWHEREid=${1}`;// Redis,自带 const redis=new RedisClient("redis://localhost:6379");await redis.set("key","value");// S3,自带 constfile=Bun.s3.file("my-bucket","hello.txt");await file.write("hello world");

数据库、缓存、对象存储,一把梭。

不用 npm install。不用 go get。不用 pip install。

Bun 出生就带。

痛点:每个语言都要装包

写后端,连数据库是基本操作。

但每个语言,都得装一遍。

Java:

<dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.7.3</version></dependency>
Class.forName("org.postgresql.Driver");Connection conn=DriverManager.getConnection(url, user,pwd);PreparedStatementps=conn.prepareStatement("SELECT * FROM users");ResultSet rs=ps.executeQuery();

连接还得手动关。忘关就泄漏。

Go:

import("context""github.com/jackc/pgx/v5")funcmain(){db, _ :=pgx.Connect(context.Background(),"postgres://...")}

go get拉包,版本对不对靠运气。

Python:

importpsycopg2 conn=psycopg2.connect(host="localhost",dbname="mydb",user="u",password="p")cur=conn.cursor()cur.execute("SELECT * FROM users")

pip install装一堆。虚拟环境一开,版本锁死。

AI 写代码,生成完还得提醒你"记得装包"。

Bun 不需要。生下来就有。

Bun 还内置了啥

  • • Bun.file:文件读写

  • • Bun.password:密码哈希

  • • Bun.hash:哈希算法

  • • Bun.serve:HTTP 服务

  • • Bun.sql:PostgreSQL 驱动

  • • Redis:Redis 客户端

  • • Bun.s3:对象存储

  • • Bun.build:打包器

  • • bun:test:测试框架

  • • bun install:包管理

  • • bunx:npx 替代

一把梭,啥都带。

为什么 Bun 能集成?

1. 没历史包袱

Bun 2022 年才出。Java 都 30 年了,标准库动一行,几千万项目可能挂。

Go 1.0 后承诺向后兼容,加东西格外谨慎。

Bun 一身轻,想加啥加啥。

2. 用 Zig 手写协议

PG 协议、Redis 协议、HTTP/1.1、HTTP/2、TLS。

Bun 团队用 Zig 全部手写。

不是套壳 libpq。不是套壳 hiredis。

是从 wire format 一行一行抠出来的。

性能比 C 还快。

3. 商业公司在背后推

Jarred Sumner 拿了融资。专门养一队人维护这些驱动。

Go 和 Python 的 PG 驱动,基本靠社区志愿者。

4. 没到 1.0

Bun 1.0 还没发。API 改就改了。

Java、Go 改个函数签名,社区能吵一年。

为什么其他语言不集成?

1. 标准库哲学不同

Go 哲学是"小而精"。goroutine进标准库,数据库驱动一律外部。

Python 哲学是"自带电池",但电池也就那几个。asynciojsonhttp是核心。

Java 标准库只规定 JDBC 接口,不规定具体驱动。商业数据库太多,Sun 也管不过来。

2. 协议碎片化

PG、MySQL、Redis、MongoDB、ClickHouse、Elasticsearch。

每个协议都不一样,每年还在演进。

今天集成 PG,明天 MySQL 8.4 协议更新,又得跟着改。

谁来长期维护?

3. 许可证冲突

PG 驱动 BSD。Redis 驱动 MIT。MySQL 驱动 GPL。

打进标准库,许可证一污染,整个语言生态跟着遭殃。

4. ABI/API 稳定性

Java 改个函数签名,几十万 JAR 可能挂。

Go 1.x 承诺兼容,标准库加东西就畏手畏脚。

5. 维护意愿

数据库协议每年更新。PG 每年发版,MySQL 8 改了一堆,Redis 6 跟 7 协议都有差异。

谁愿意在标准库长期背这活儿?

Bun 不怕。没承诺 ABI 稳定,改就改了。

对开发有啥影响?

AI 写代码更顺

AI 生成 Bun 代码,直接能跑。生成 Java 代码,AI 还得提醒你"加依赖"。

import{sql, RedisClient}from"bun";const redis=new RedisClient("redis://localhost:6379");// 一段完整:HTTP + PG + Redis Bun.serve({port:3000, async fetch(req){constid=new URL(req.url).searchParams.get("id");if(!id)returnnew Response("id required",{status:400});// 查缓存 const cached=await redis.get(`user:${id}`);if(cached){returnResponse.json({source:"cache", data: JSON.parse(cached)});}// 查库 const user=await sql`SELECT * FROMusersWHEREid=${id}`;if(user.length===0){returnnew Response("not found",{status:404});}// 写回缓存 await redis.set(`user:${id}`, JSON.stringify(user[0]),"EX",10);returnResponse.json({source:"db", data: user[0]});}});

HTTP、PG、Redis,一把梭。

换 Node.js,得装 pg、ioredis。然后 npm install。然后祈祷版本对。

新项目可以试 Bun

小项目、脚本、工具、内部系统,Bun 一把梭。性能比 Node.js 快,内置工具多。

老项目别瞎迁移

Bun 还在 1.0 之前,生态没 Node.js 全。生产大项目,Node.js 22 LTS 稳得多。

以后新语言可能都这么干

Deno 内置了 KV,虽然不是 PG 但思路一样。

Bun 把 PG、Redis、SQLite 都内置了。

以后新语言出生,大概率都带数据库驱动。

老牌语言改不动,只能让社区卷。

写在最后

Bun 集成数据库驱动,不是技术难题。

是"利益"、“哲学”、"包袱"的问题。

  • • Go 哲学"小而精",不会改。

  • • Java 包袱重,改一行挂一片。

  • • Python 靠社区,统一不了。

  • • Bun 出生晚,没包袱,有钱,有人,敢改。

写代码的,跟着用就行。

哪个顺手用哪个。

写小工具用 Bun。写大项目用 Node.js。写底层用 Go。写胶水用 Python。

别死磕一门。能解决问题就行。

http://www.jsqmd.com/news/1148207/

相关文章:

  • 嘉祥整牙哪家最靠谱
  • 振弦采集仪与倾角计技术差异分析:从底层原理到工程选型对照
  • LinkSwift:九大网盘直链下载助手,让文件下载回归简单高效
  • OpenClaw 2.7.9 网关离线、安装报错全套故障解决办法
  • AI助手引发重大变革,谁能掌控“设备联盟”赢得平台之战?
  • 数屿医械数据库 2023 版:3 步精准查询最新二类医疗器械目录(附导出指南)
  • Windows网络性能诊断:iperf3预编译版深度探索与实战应用
  • 每个开发者都该有一个本地工具箱,我造了一个
  • 射频功率放大器温补简略
  • 爆肝万字!C++ Stack/Queue/Priority_queue 从入门到源码手撕,仿函数 + 容器适配器 + 二叉堆,面试吊打 99% 人!
  • IQR与MAD异常值检测实战:3种数据分布场景下的Python代码与效果对比
  • 音频剪辑革命:5分钟掌握Audio Slicer智能分割技巧
  • Tor网桥方法
  • Claude Code技能库:扩展AI代理能力的即插即用解决方案
  • Windows系统文件CIWmi.dll丢失找不到问题解决
  • m4s-converter:跨平台B站缓存视频转换解决方案
  • 5 分钟跑通你的第一个 AI Agent
  • 补时绝杀:西蒙谷的最后一舞,与马丁内斯没能兑现的空霸蓝图
  • HarmonyOS7 数据看板卡片布局:flexBasis 比固定宽度更顺手
  • 终极指南:彻底解决macOS系统下SMAPI启动失败的5种方法
  • HarmonyOS7 ArkUI 实战:Flex Row 商品信息卡片不被长文案挤变形
  • 基于C语言实现(控制台)中小型饭店的点餐系统
  • 开源项目 Riddle 让 Remarkable 电子墨水屏平板秒变“邪恶日记”,能与你对话!
  • openEuler AI-tools实战:如何训练97%准确率的验证码识别模型
  • 多机构联合研究:大型推理模型推理轨迹风险更高,提出自适应缓解方法
  • 【测试工具】Reqable抓包工具保姆级教程:小白也能轻松上手的HTTP调试神器
  • 开源一个 Android/Rockchip 代码审查 Skill:android-rockchip-reviewer-skill
  • R 4.3.1 + RStudio 2024.09 双平台安装:3个关键配置与1个常见路径错误排查
  • 99.2 分断层第一!2026 四大主流 AI 剪辑工具全维度实测横评
  • 深圳正在成为液冷焊接设备的高地:一条200公里供应链的故事