java 嵌入式linux系统_嵌入式Linux开发web程序的可行性?

java 程序员,最近了解了一下嵌入式Linux。想问一下 为什么不能使用java语言在嵌入式Linux上开发web程序? 我看现在大多数都是用boa+cgi做的。

用最快的方法完成目标。

1. 知识栈限制

这个跟知识栈有关系,嵌入式Linux的开发人员掌握的语言C/C++两种,所以他们选择C/C++相关的Web Server方案是可行的。

2. BS

BS,Brower-Server,浏览器从Web服务器获取数据,然后渲染显示,就这么简单。

1)web server,有很多种,boa知识其中的一种,还有比如我们在用的Lighttpd也是可行。

2) web server的背后实际是http协议,http协议就更简单

```

浏览器往服务器发起请求,通过tcp建立链接发送以下报文

METHOD URL \r\n

key: value \r\n

\r\n

服务器收到请求后,根据请求路径,应答请求

HTTP/1.1 200 OK\r\n

Key: Value \r\n

\r\n

payload

\r\n

浏览器收到应答后,绚烂显示

```

3. cgi

cgi实际上是利用管道,把网页输入端的信息当做输入(环境变量),调用一个程序,把程序的标准输出,输出给网页前端。

B -> Request /cgi/hello -> Server -> Fork run xxxx/hello,并且监听标准输出 -> hello.elf 参考http格式构造标准的response -> 打印到标准输出 -> Sever 返回数据 -> B

cgi 还有另外的优化版本叫 fastfcgi,可以不用频繁的fork进程,把所有请求都重定向到同一个进程中,这里面利用到了 unix socket或者local tcp socket进行消息中转

4. 嵌入式设备资源限制

嵌入式设备不像Android设备,需要具有高内存,高Flash,一般内存只有16-32M,有的甚至更小只有8M,Flash普遍在8-16之间,用Nand Flash的有上64M以上。

java要跑,首先要有java虚拟机,一个java虚拟机至少需要2M的空间,这就是限制之一。

httpkit是精巧的java嵌入式http服务器,超快的启动速度(实测仅需80毫秒),是tomcat、jetty的完美替代方案。 使用方法//起一个server实例 int port = 7777; HttpServer server = HttpServer.bind(port); //设置上下文路径 server.setContextPath("root"); //设置controller类的扫描包 server.packageSearchAndInit("com.lnwazg.main.ctrl"); //设置自动磁盘扫描 server.autoSearchThenAddWatchResourceDirRoute(); //监听在这个端口处 server.listen(); 然后访问文件列表: http://127.0.0.1:7777/root/list 访问具体的控制器 http://127.0.0.1:7777/root/base/index Controller类的写法package com.lnwazg.main.ctrl; import java.io.File; import java.util.ArrayList; import java.util.List; import com.lnwazg.httpkit.anno.BasePath; import com.lnwazg.httpkit.controller.Controller; /**  * 示例controller<br>  * 注解指定这个类的path  * @author nan.li  * @version 2016年11月30日  */ @BasePath("/base") public class FirstController extends Controller {     void index()     {         Person person = new Person();         person.age = "18";         person.name = "hudson";         List<Person> list = new ArrayList<>();         for (int i = 0; i < 5; i )         {             list.add(person);         }         person = new Person();         person.name = getParam("fff");         list.add(person);                  //输出abc         ok("abc");                  //输出一个json对象         //okJson(list);                  //        okJson(GsonHelper.gson.toJson(list));         //        okJson(list);         //        okJson(new FrontObj().success().setData(list));         //        okJson(success(list));         //        okJson(fail(list));         //        okJson(fail(list,10002,"转换错误"));         //        okJson(fail(10002, "转换错误"));         //        okJson(fail(10003));     }          void index2()     {         //输出一个文件         okFile(new File("c:\\1.jpg"));     }          public static class Person     {         String name;                  String age;     } } 标签:httpkit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值