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的空间,这就是限制之一。