Skip to content

Latest commit

 

History

History
138 lines (116 loc) · 5.34 KB

README_EN.md

File metadata and controls

138 lines (116 loc) · 5.34 KB


Solon v2.5.8

Java new ecological application development framework, smaller, faster, simpler!

https://solon.noear.org

Maven Apache 2 jdk-8 jdk-11 jdk-17 jdk-21
gitee star github star


Language: English | 中文 | Русский | 日本語

Startup is 5 to 10 times faster; QPS is 2 to 3 times higher; runtime memory is saved by 1/3 to 1/2; packaging can be reduced to 1/2 to 1/10


Introduction:

Build from scratch. It has its own standards and norms and open ecology. Combination of different ecological plug-ins to meet different needs, convenient customization, rapid development:

  • Restraint, simplicity, efficiency, openness and ecology
  • Supports JDK8, JDK11, JDK17, JDK21
  • Http, WebSocket, Socket three signal unified development experience (commonly known as: three-source integration)
  • Supports "annotation" and "manual" modes, freely controlled as needed
  • Not Servlet, can adapt to any basic communication framework (minimum 0.3m running rpc architecture)
  • Unique IOC/AOP container design. It won't start slowly just because there are more plug-ins
  • Supports Web, Data, Job, Remoting, Cloud, and other development scenarios
  • The two architecture modes are Handler + Context and Listener + Message
  • Emphasizes plug-in extensibility, expandable and swappable, adaptable to different application scenarios
  • Supports GraalVm Native Image packaging
  • Allow service plug-ins to hot-plug, hot-swap, and hot-manage.

Ecosystem Architecture Diagram:

Hello World:

<parent>
    <groupId>org.noear</groupId>
    <artifactId>solon-parent</artifactId>
    <version>2.5.8</version>   
</parent>

<dependencies>
    <dependency>
        <groupId>org.noear</groupId>
        <artifactId>solon-web</artifactId>
    </dependency>
</dependencies>
@SolonMain
public class App {
    public static void main(String[] args) {
        Solon.start(App.class, args, app -> {
            //Handler mode:
            app.get("/hello", c -> c.output("Hello world!"));
        });
    }
}

//Controller mode: (mvc or rest-api)
@Controller
public class HelloController {
    //Limit Socket method type
    @Socket
    @Mapping("/mvc/hello")
    public String hello(String name) {
        return "Hello " + name;
    }
}

//Remoting mode: (rpc)
@Mapping("/rpc/")
@Remoting
public class HelloServiceImpl implements HelloService {
    @Override
    public String hello() {
        return "Hello world!";
    }
}

Official website and related examples, cases:

Special thanks to JetBrains for supporting open-source projects:

JetBrains