前言:

在看这边文章前,可以建议看下:图形界面操作系统发展史——计算机界面发展历史回顾

从CS到BS,现在的前端开发,其实也是GUI开发范畴。现今

各平台的UI开发概况

HTML&CSS,Winform&WPF,Universal Windows APP,JAVA GUI, Android,iOS……

不一而足,先让我们看看

JAVA GUI

我觉得java是最好学的语言。也是像我这种非科班出生的,踏入码农行业的敲门砖(看C c++ 学了一年,也就hello word,会写几个demo界面)。

做java开发,从AWT/Swing、SWT/JFace,这个有IBM的大佬总结,传送门:https://www.ibm.com/developerworks/cn/java/j-gui/

我觉得,无论是c还是java,还是 后面的hmlt ,UI开发 总可以借鉴基本的 Swing Class 树

  1. Object
  2.     *Component
  3.         Container
  4.             *JComponent
  5.                 *AbstractButton
  6.                     JButton
  7.                     JMenuItem
  8.                         JCheckBonMenuItem
  9.                         JMenu
  10.                         JRadioButonMenuItem
  11.                     *JToggleButton
  12.                         JCheckBox
  13.                         JRadioButton
  14.                 Box 
  15.                 Filler
  16.                 JColorChooser
  17.                 JComboBox
  18.                 JDesktopIcon
  19.                 JFileChooser
  20.                 JInternalFrame
  21.                 JLabel
  22.                 JLayeredPane
  23.                     JDesktopPane
  24.                 JList
  25.                 JMenuBar
  26.                 JOptionPane
  27.                 JPanel
  28.                 JPopupMenu
  29.                 JProgressBar
  30.                 JRootPane
  31.                 JScrollBar
  32.                 JScrollPane
  33.                 JSeparator
  34.                 JSlider
  35.                 JSplitPane
  36.                 JTabbedPane
  37.                 JTable
  38.                 JTableHeader
  39.                 *JTextComponent
  40.                     JEditorPane
  41.                         FrameEditorPane
  42.                         JTextPane
  43.                     JTextArea
  44.                     JtextField
  45.                         JPasswordField
  46.                 JToolBar
  47.                 JToolTip
  48.                 JTree
  49.                 JViewport
  50.                     ScrollableTabViewport
  51.             Panel
  52.                 Applet
  53.                     JApplet
  54.             Window
  55.                 Dialog
  56.                     JDialog
  57.                 Frame
  58.                     JFrame
  59.                 JWindow

Windows桌面应用程序开发Winform&WPF

Winform是XP时代的Windows 桌面程序开发技术。

采用C#语言开发UI和逻辑,没有使用标签语言写UI。

采用事件驱动方法。

Winform现在基本被淘汰了。

Winform是上一代的主流桌面应用程序开发开发技术,这个我从来没有用过,现在也基本不再使用了。

WPF是新一代微软图形界面开发技术。它是随着Windows Vista推出的。.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

采用XAML标签式语言开发UI,可以在Expression Blend可视化设计开发。美工也可以轻易上手。XAML支持DataBind, Data(Item)Template, Style, Storyboard, Rescoure,自定义控件等技术,开发速度快。

支持事件驱动(Code behind)或者数据驱动(MVVM)开发模式

使用GC回收垃圾,XMAL和C#将编译成CLR中间运行语言,效率比较低,占用内存大

WPF的技术理念非常先进,开发过程也非常友好,也可以做出极为绚丽的界面,可是开发出来的应用体积较大,运行效率比较低,占用内存大,所以没有普及开来。(大部分我们常见的桌面应用都是C&C++开发)但是因为开发效率高,所以很多企业内部经常使用该技术。

Windows 10上的通用应用Universal WIndows APP(UWP)

Universal Windows App(UWP)也就是通用Window App 是微软最新的图形应用开发技术,它是基于WPF技术演进而来的。

UWP继承了所有WPF的优点,还可以使用C++和HTML&Javascript来开发,和WPF编译成中间代码不同,UWP直接将代码编译成机器码直接运行,极大的提高了效率。一次开发编译,可以同时在Windows 10,Windows 10 Mobile, XBOX,物联网IoT设备等其他Windows平台上运行

采用和iOS APP一样的沙盒机制,一样也有电话本,传感器,地图,推送等API。

采用响应式布局,可以适配任何分辨率等。

大量使用异步API,保证界面响应为最高级别。

我开发UWP并不多,但是我接触WPF的时间够长,所以UWP上手毫无压力。相比WPF运行在.NET运行时里,UWP是可以编译成Native Code运行,所以UWP运行效率更高,UI更为流畅。它是目前微软最为主推的开以技术。

Android

android开发,主要一xml来做界面(当然蛋疼手工写也可以。

一个界面xml对于一个active,active与active 桥接intent ,

但是,我更加喜欢iOS的界面开发模式(storybord,所以这里略过。

不过我觉得会ios开发的,上手android开发业不难

iOS

iOS应用是基于Cocoa框架上的,早期的Cocoa是用来开发Mac 应用的,后来加入了Cocoa touch层API用于iOS。

采用XIB或者Storyboard可视化搭建UI,也可以使用手写纯代码来开发UI。

采用Objective C 或者 Swift语言开发逻辑。

在Iphone5 加入多种分辨率后,苹果引入了Autolayout自动布局,它是一种基于约束的,描述性的布局系统。

默认严格遵守MVC设计模式,现以也可以使用MVVM开发框架。

采用ARC实现了自动内存管理。

iOS开发技术还有许多要点,这里就省略了,相信看到这篇文章的人都比较熟悉。

各平台UI开发小结

从上面可以看出,对于UI构建,都是采用类HTML语言。一个HTML标签表示一个View元素。它即可以当其他View的容器,也可以当内容或者数据的容器。可以用独立的Style文件来表示样式,也可以直接放在标签的属性里面。每个标签都可以有Name或者id属性来让js或者其他语言直接操作。

iOS其实也和上面的UI开发范式差不多,Storyboard内部其实也是一个XML文件,只不过我们不能直接编辑,只能可视化设计和通过代码操作。

Web界面的开发HTML&CSS

Web界面是以HTML标签的形式构建UI,它是HTML语言的最基本的单位。

用尖括号包围的关键词如

来表示UI元素,通常是成对出现。

如果需要在容器标签里放其他HTML单位,需要放在标签对里面。

一些HTML元素属性,放在第一个HTML标签里。以键值对的形式存在,比如type = 'text'。

使用Form来提交表单,Http(HTTPS)协议和服务器通讯。

通常通过CSS来控制HTML元素的外观。

通常通过Javescript来控制HTML元素。采用Ajax技术异步通信,实现局部刷新等。

这里就不给示例了,总是来说前端Web开发博大精深,新的技术框架层出不穷,当一个前端工程师也不容易。

从backbone,angular,到现在react+redux ,层出不穷,疲于奔命。你学了ie,还有firefox,还有chrome,……

一如前端深似海。

但是,前端的好处就是,统一GUI开发。我并不喜欢RN的开发模式,觉得还是

html+css+js 自己定制webkit壳,然后,你想怎么玩就怎么玩。(俗话中webapp……

吃饭去了,不扯了……

闲暇之余再来侃大山!

漫谈GUI开发—各种平台UI开发概况的更多相关文章

  1. U9单据UI开发--单据类型UI开发

    1.在解决方案下新建UI界面项目,命名以UI作为后缀 2.先删除系统默认新建的UI界面数据模型,并新建界面数据 3.新建单据类型UIModel(界面数据),以model作为界面数据后缀名 4.修改单据 ...

  2. [置顶] Kendo UI开发教程: Kendo UI 示例及总结

    前面基本介绍完Kendo UI开发的基本概念和开发步骤,Kendo UI的示例网站为http://demos.kendoui.com/ ,包含了三个部分 Web DemoMobile DemoData ...

  3. django开发自动化测试平台简介

    Django的优点 1:功能完善.要素齐全:自带大量常用工具和框架(比如分页,auth,权限管理), 适合快速开发企业级网站. 2:完善的文档:经过十多年的发展和完善,Django有广泛的实践案例和完 ...

  4. 使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件

    使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件 前期准备: 安装 python:https://www ...

  5. Bootstrap:UI开发平台 sdk

    Bootstrap:UI开发平台 Bootstrap是一个易用.优雅.灵活.可扩展的前端工具包,里面包含了丰富的Web组件,包括布局.栅格.表格.表单.导航.按钮.进度条.媒体对象等,基于这些组件,可 ...

  6. 老司机学新平台 - Xamarin开发环境及开发框架初探

    随着被微软收购,最近一年间,Xamarin的火爆程度与日俱增.免费.更好的VS2015集成.更好的模拟器,甚至,在windows上运行和调试iOS平台程序,让我这样接触了十几年.NET平台的老司机,即 ...

  7. 全新的跨平台app软件开发工具——Lae软件开发平台

    Lae是一款运行于windows的界面开发工具,具有所见即所得.开发跨平台.UI布局自由.机制简单.维护容易等诸多优点,可以开发同时运行在windows.Linux.MacOX.iOS.Android ...

  8. 微信公众平台开发:Web App开发入门

    WebApp与Native App有何区别呢?Native App:1.开发成本非常大.一般使用的开发语言为JAVA.C++.Objective-C.2.更新体验较差.同时也比较麻烦.每一次发布新的版 ...

  9. 十二、Android UI开发专题(转)

    http://dev.10086.cn/cmdn/bbs/viewthread.php?tid=18736&page=1#pid89255Android UI开发专题(一) 之界面设计 近期很 ...

随机推荐

  1. 通过ViewPager 实现图片轮播

    通过ViewPager 实现图片轮播 首先来个效果图 布局文件: LinearLayout 用来存放下方的几个小白点. <?xml version="1.0" encodin ...

  2. flash上传头像,截取图像 组件演示

    效果图如下: HTML页面代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:// ...

  3. JS功能函数

    1.整数每三位增加一个, function toThousands(num) {      return (num || 0).toString().replace(/(\d)(?=(?:\d{3}) ...

  4. Linux安装nginx详细步骤

    安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 在/usr/local/下创建一个nginx的文件夹 ...

  5. window iis重启

    WINDOWS server 任务计划实现定时自动重启IIS编写批处理文件IIS.bat@echo offnet stop iisadmin /yesnet start iisadminnet sta ...

  6. Linux:ftp服务本地用户,虚拟用户配置

    本地用户 1. 修改ftp配置文件,  anonymous_enable=NO   默认为YES,修改为NO,禁止匿名访问, 监听端口,可以根据自己的需求修改,为了安全起见自定义为好 2. /etc/ ...

  7. ol图层支持的数据源

    ol.source.BingMaps,必应地图的数据: ol.source.Cluster,聚族矢量数据: ol.source.ImageCanvas,数据来源是一个canvas元素,其中数据是图片: ...

  8. foreach next 操作数组指针移动问题

    2018年10月20日10:39:40 先说结论,foreach 维护的是一套属于自己的数组指针 会在操作数据的时候,分裂一套变量地址,即使你强制使用 & 取地址一样会分裂,不会引用同一套指针 ...

  9. Jmeter设置默认中文页面

    方法一(从网上看到的) 启动Jmeter找到 options >choose language >chinese(简体繁体自己选). 这样设置后界面就变成了中文,但是当我们下次打开时又恢复 ...

  10. bootstrap-treeview树形图参数详解

    哈哈 找了半天找到了,需要的可以去看看! 直接放上博客链接:https://blog.csdn.net/hailangtuteng/article/details/80842730