V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
moverinfo
V2EX  ›  程序员

timystruct 前世今生(2)

  •  
  •   moverinfo · 8 小时 4 分钟前 via iPhone · 766 次点击

    有很多朋友都很纳闷,现在都什么时候了,你还需要考虑计算机资源吗?而且现在的资源都很便宜。如果从眼前的经济实用性角度看待问题,这个我也认同。但从技术发展的长远角度来看,节约资源,提高效率,永远是作为技术人员所追求的。这就是为什么我们仍然在看到不断有新的语言出现,比如 RUST 。而为什么 Spring 框架里搞 Bean 的生命周期概念,目的不也是在节约内存资源吗?关于这个话题,我们后面还可以继续探讨,就不在这里过多强调了。

    其实模块化带来的好处很多,尤其是处在微服务时代。在一个项目起步的时候,我们很难知道一个项目是否就应该采用微服务架构。大多数人都是跟风,做到后面发现实现这些需求根本不应该搞微服务。想切回单体架构又特别麻烦。而且还是一个系统改造工程。那如果一个框架能在单体架构与微服务架构之间切换,那不是很棒的一件事吗?你可能会想了解 tinystruct 是如何实现的,我用简单的比喻形容它:一个项目像一根电缆,而服务或功能则是电缆里的每一根导线。这就是 tinystruct 的设计理念之一。这世界上没有一样复杂的事物是不可能被拆分成一个特定规模的小的单元。

    作为一个能运行在低端设备上的框架,除了模块化以外,就是外部依赖。如果要实现一个功能,却依赖很多,必然导致资源不可控。毕竟有些依赖会耗费很多资源,而有一些依赖一时半会,你想去掉并不是那么容易。所以,你可能会注意到 tinystruct 框架里,并没有使用一些常用的库,比如 Jackson ,也没有像 fastjson 里搞一堆的将 JSON 硬生生地映射为某个 Java 对象。在我的设计哲学里,我更喜欢简单,职责单一,这才是减少 bug 的关键。

    当我们有时候接到一个任务,需要写一个工具,而这个工具可能仅仅就是处理一个小需求,比如从处理一些 excel 文件数据。很多朋友用惯了 Springboot 就自然的建了一个 Springboot 项目。然后,又接到一个爬虫需求,又去建了一个 Springboot 项目。不过,有些比较资深的程序员就会想,我为什么要用这么大的一个框架,去完成这么小的任务呢?如果你去找个替代品,貌似在 Java 世界里,找不到几个可以拿来用的。那就自己从零到一写一个纯 Java 的工具吧。写到一半你会发现你要写很多东西,比如访问数据库,比如 JSON 格式的转换,处理 HTML 的库等等。于是搞不下去了。甚至很多人忘了在没有 Spring 框架下如何去写 Java 了。从这种现象中,我们可以发现一些问题。首先就是习惯了杀鸡用牛刀;其次,淡化了 Java 原有的运行模式;最后,感觉这个 Java 世界只有 Spring boot 再没有别的,完全失去了程序员该有的创新意识。甚至很多人都觉得换个工作可能只能跑快递了。我想对 Java 程序员说的是,框架是被你使用的,你可以根据需要选择它,而不能让框架把自己绑架了。

    不过,我要强调的是,本人无意去撼动一个被众人推崇的框架,只是认为 tinystruct 或许是一个补充,或者可以满足一部分小众需求。或者只要能帮我自己解决一点问题就好。我本身也不是靠这个吃饭的。只是分享一下我个人的一种解决问题的方式而已。你是否感兴趣,我丝毫不在意。我也不建议你放弃你的吃饭的家伙来选择一个你觉得可能对你是无聊的东西。

    (未完待续)

    tinystruct 前世今生( 1 ): https://v2ex.com/t/1158684?p=1#reply7

    11 条回复    2025-09-15 16:39:24 +08:00
    ruanimal
        1
    ruanimal  
       7 小时 17 分钟前   ❤️ 3
    有很多朋友都很纳闷,然而并没有人纳闷
    cloudzhou
        2
    cloudzhou  
       7 小时 10 分钟前
    我是支持程序员推广自行开发的组件的,比各种水贴好多了,timystruct -> tinystruct

    问题一:

    Q:而为什么 Spring 框架里搞 Bean 的生命周期概念,目的不也是在节约内存资源吗?
    A: Bean 生命周期如果只是为了单例,那么声明全局变量即可,而 Spring 最大价值在于 约定即配置,一致的开发模式,IOC

    Spring 本身很优秀,他的笨重是组件带来的,你如果使用 Spring 一个最简单例子,会发现秒级别启动

    问题二:
    你要说明 tinystruct 能做什么,带来什么,我看了你的 git repo ,我看不懂
    dssxzuxc
        3
    dssxzuxc  
       6 小时 34 分钟前
    @cloudzhou #2 他这个框架亮点就是一句话"designed for AI integration",但是对 java 生态本身没有什么意义,没有解决问题。
    moverinfo
        4
    moverinfo  
    OP
       3 小时 19 分钟前 via iPhone
    @cloudzhou 嗯,我只是想说明一下 Spring 是通过生命周期来实现优化和管理并节约资源的,不是无所谓的事情。Spring 框架挺优秀的,如果你更有追求的话,有些框架可以是毫秒级。关于这个框架能做什么,真的无法用三言两语说清楚。就像你第一眼也看不出 Spring 是干啥的,我只能简单的说就是一个轻量级的 Java 模块化开发框架。
    cs8425
        5
    cs8425  
       3 小时 4 分钟前
    对于小任务小工具
    更纳闷的是为何要用 java?
    用更适合的语言跟工具不是更好?
    totoro52
        6
    totoro52  
       3 小时 1 分钟前
    为啥不放在推广节点
    Gilfoyle26
        7
    Gilfoyle26  
       3 小时前
    Java 我都快放弃了,你现在告诉我,纳闷???现在都什么时候了,还在搞茴香豆的茴有几种写法
    moverinfo
        8
    moverinfo  
    OP
       2 小时 36 分钟前 via iPhone
    @cs8425 Java 有 Java 的优势,但是你也要知道,公司里面不是想换就能换的。
    @Gilfoyle26 不用放弃,Java 还是有市场的。别被脚本语言吓坏了。
    cloudzhou
        9
    cloudzhou  
       2 小时 25 分钟前
    @moverinfo 不是 Spring 优秀,在 Spring 之前,业务开发的理念 DDD 、IOC 等就如荼如火,Spring 只是其中杰出的代表。Spring 是干啥的清晰得很。

    而你推广一个东西,要理念优先,别人认同你的理念才会去了解你的产品
    而不是:“真的无法用三言两语说清楚”
    moverinfo
        10
    moverinfo  
    OP
       45 分钟前 via iPhone
    @cloudzhou 你说的有道理,如果说的是框架的设计理念可以用几个关键词来概括:简洁 simplicity 、模块化 modularity 、无侵入 non-intrusive 。
    cloudzhou
        11
    cloudzhou  
       9 分钟前
    @moverinfo 你这样说的话,吸引不了别人的

    业务开发者,要解决的是心智问题,提高效率的问题,其他次要的
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5536 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:48 · PVG 16:48 · LAX 01:48 · JFK 04:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.