精华内容
下载资源
问答
  • 程序的测试5大方面

    千次阅读 2019-05-10 17:47:11
    程序的测试5大方面 1.功能测试 功能测试跟传统的web端的功能测试类似,这里不再赘述。用例设计方法等跟需求相关性较大。还有微信自带的转发、添加到桌面、从我的小程序中移除和关于小程序的功能也需要测试一下。...

    小程序的测试5大方面

    1.功能测试

    功能测试跟传统的web端的功能测试类似,这里不再赘述。用例设计方法等跟需求相关性较大。还有微信自带的转发、添加到桌面、从我的小程序中移除和关于小程序的功能也需要测试一下。

    2.兼容性测试

    包括操作系统(Android和ios)兼容性,屏幕(大、中、小)兼容性,微信版本兼容性

    3.性能测试

    小程序的客户端性能包括页面的白屏时间,首屏时间,资源占用,页面渲染时间,帧率等等。小程序的开发工具提供了手动查看性能的窗口,只要在小程序开发版中打开性能窗口即可看到页面的性能数据,但是只能手动操作获取,并不能自动记录。

    4.后台的接口测试

    小程序的后台接口跟其他的客户端后台接口测试类似,直接按照常规的后台测试来开展就可以。

    5.前后台数据测试

    既可以在前端提交数据到后台保存,也可以在后台添加数据后前端显示,数据保持一致。

     

    展开全文
  • 零基础入门微信小程序开发

    万次阅读 多人点赞 2018-07-03 02:45:07
    本课程是一个系列入门教程,目标是从 0 开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件、页面样式文件、JavaScript 的基本知识并以指南针为例对基本知识进行扩展,另外加上开发工具的安装...

    课程介绍

    本课程是一个系列入门教程,目标是从 0 开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件、页面样式文件、JavaScript 的基本知识并以指南针为例对基本知识进行扩展,另外加上开发工具的安装、小程序发布等内容,共 9 篇文章。

    本课程共包含四个部分。

    第一部分(第1-3篇)带你初步了解小程序是什么,然后进行小程序开发的准备工作,从注册账号到安装开发工具一应俱全。工欲善其事,必先利其器。

    第二部分(第4-6篇)。面向入门级读者介绍小程序构成的各个部分。您不需要事前准备任何知识,需要掌握的会进行说明,需要扩展的会提供信息的出处。千里之行始于足下。

    第三部分(第7-8篇)通过指南针的例子,介绍一个小程序的实现过程。通过这个实例,综合运用所学知识,使小程序开发能力进一步提高。麻雀虽小,五脏俱全。

    第四部分(第9篇)只包含一篇文章,具体介绍小程序发布的过程。使读者能够对小程序开发的全过程有一个完整的了解。编筐编篓,全在收口。

    哪怕您事先没有任何微信小程序相关技术的经验,认真学完该达人课之后,您会掌握基本的小程序开发方法,并具备自主扩展知识面,以及进行更高层次开发的能力。

    点击查看课程全部内容

    作者介绍

    薛卫国,现就职于某外企担任架构小组责任人,CSDN 博客专家,长期从事 C++ 开发,精通 UML、设计模式,创办有公众号《面向对象思考》。毕业于东北大学,曾留校在国家重点实验室工作。

    课程内容

    第01课:初识微信小程序

    要火的节奏

    最近有一则来自北京商报的新闻引起了不少人的注意,我们这里选取一部分:

    争夺流量 手机厂商“抱团”对抗微信小程序

    3月20日,小米、中兴、华为等10家手机厂商联合对外宣布,推出基于手机硬件平台的新型应用生态“快应用”及相关标准。在微信小程序用户规模日益壮大、硬件利润微薄的背景下,本次快应用的推出被看做是手机厂商与腾讯争夺流量与利益的举动。业内人士认为,对于整个市场来说,流量竞争有促进作用,但微信已经具有较强的用户黏性,十大手机厂商要想争夺用户流量并非易事。

    估计这些厂家的标准出台还需要一段时间,但是有一点可以确定的是:小程序类的开发要火。

    但如果你打开轻应用的文档可以发现两点:

    1.应用文档的信息量还很有限。2.轻应用的架构,采用的技术和微信小程序很相似。

    处于这个目的,作者赶在这个时机制作了本课程,希望可以为潮流加一份力;作为程序员,希望各位可以通过本课程的学习,在有限的时间内为自己添一份技能!

    参考资料:轻应用开发文档

    什么是小程序?

    最近一个小游戏“跳一跳”火得不得了,相信即使您自己没有玩过,身边的亲戚朋友也一定玩过。画面大致如下:

    当然了,关于玩法等等不是本文的内容,可以参照百度百科

    这就是微信小程序的成功案例了。

    微信小程序简介

    微信小程序简称小程序,张小龙在微信公开课 Pro 上发布的小程序正式上线,时间是2017年1月9日。关于小程序,张小龙在他的公开课中有过很详细的说明,大家尽可以到网上去搜,这里不再赘述,只说作者自己的理解。

    微信小程序这个词可以分解为“微信”和“小程序”两部分。

    其中“微信”可以理解为“微信中的”,指的是小程序的执行环境;当然微信在提供执行环境的同时也延长了用户使用微信的时间。

    “小程序”是说它首先是程序,然后具备轻便的特征。小程序并不像其他应用那样,它不需要安装,而是通过扫描二维码等打开后直接执行;用完以后也不需要卸载。这就是所谓用完即走的原则。

    另外,微信不会提供类似于小程序商店的地方,需要小程序提供者自己通过二维码,群分享的手段来传播,这就是所谓去中心化的形态。

    微信朋友圈提供了好友之间沟通信息的手段,订阅号提供了面向粉丝推送信息的手段,而小程序则是提供了用户通过自己的操作而与服务实现互动的手段。

    小程序相关技术介绍

    本课程的目标读者群是了解基本的 C/C++ 语法但对小程序开发完全没有经验的程序员,因此在说明微信小程序的同时,对相关技术也将进行相应的介绍。通过这种方式,可使读者能够非常顺利地学习,而无需到处寻找资料导致忘了学习微信小程序这个本来的目的。

    微信小程序推出一年多一点的时间,算是一个新事物,但是利用的技术却都是已经存在的技术。如果你稍加调查就会发现,不光是微信小程序,很多类似形态的应用都采用类似的架构:

    1. 使用 JSON 技术来表现应用的配置信息。包含应用的基本信息,页面配置和路由,应用全体的信息等。
    2. 使用经过定制 CSS+XML 技术来实现视图层的描述。画面元素,例如列表、按钮、文本框、选择框等都通过 XML 语言来描述,遵从 XML 语法,对于页面的共同风格,使用 CSS 进行定义。
    3. 使用 JavaScript 语言来实现逻辑层结构。包括用户操作的处理,系统 API 的调用等。
    4. 架构在视图层和逻辑层之间提供数据和事件传输功能,从而尽量减少难度。由于类似应有都属于轻应用,所以提供的功能都比较单一。

    具体的语法,用途等将会在使用的时候详细介绍,这里只提一下相关技术的基本情况,了解即可。

    换一种说法就是:并不需要另外自己调查,跟着本课程走下去就好。

    JSON

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于 ECMAScript(W3C 制定的 JavaScript 规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

    XML

    XML(Extensible Markup Language),中文名为可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

    在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息,比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是 Internet 环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C 就发布了 XML1.0 规范,使用它来简化 Internet 的文档信息传输。

    CSS

    层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现 HTML 或 XML 等文件样式的计算机语言。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

    CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。

    JavaScript

    JavaScript 一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    在1995年时,由 Netscape 公司的 Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为 Netscape 与 Sun 合作,Netscape 管理层希望它外观看起来像 Java,因此取名为 JavaScript。但实际上它的语法风格与 Self 及 Scheme 较为接近。

    为了取得技术优势,微软推出了 JScript,CEnvi 推出 ScriptEase,与 JavaScript 同样可在浏览器上运行。为了统一规格,再加上 JavaScript 兼容于 ECMA 标准,因此也称为 ECMAScript。

    学习方法

    微信小程序虽然是新事物,但学习方法却不是新方法。

    我们的套路是:首先生产一个最简单的小程序实例,通过这个实例介绍微信小程序的构造和想法,这算是学习这个活动中“学”的部分。然后扩展这些知识点,通过开发一个简单的小程序的过程来运用这些知识点,这算是“习”的过程。

    这是作者这些年来屡试不爽的方法。

    参考资料

    在学习和开发的过程中,我们主要会参考微信的开发文档。其原因是小程序太新了,相应的知识储备还不够丰富。虽然也可以找到一些开发方面的书籍,但是说实话,内容并不比微信本身的开发文档更详尽。

    第02课:开发环境的准备

    创建自己的小程序账号

    在开发自己的微信小程序之前,首先需要注册小程序账号,接下来我们一步一步做详细说明。

    打开浏览器,输入:mp.weixin.qq.com。

    因为是第一次使用,所以选择画面右上角的“立即注册”。

    选择左下角的“小程序”方框。

    输入邮箱、密码、确认密码、验证码,之后选择同意协议和条款。当然这里的密码不是邮箱的密码,而是正在申请的小程序账号的密码。

    最后按下“注册”按钮。

    点击“登录邮箱”按钮。打开相应的软件后,应该可以收到下面的邮件。如果没收到的话,建议看一下垃圾邮件,没准儿那里有。

    单击下半部一大片绿色的部分,就可以回到注册界面继续剩下的工作。

    选择主题类型为“个人”,然后输入管理员的姓名,身份证号码。

    输入手机号码并单击“获取验证码”,将手机接收到的验证码输入到短信验证码栏中。

    完成上述步骤,画面下部会出现一个二维码,需要用已经绑定银行卡的微信的扫一扫功能扫描该二维码进行实名认证。

    如果认证成功,画面会变成下面这个样子。

    点击“继续”按钮。

    意思就是现在后悔还来得及,如果不后悔今后就没法后悔了。我们按下“确定”按钮。

    大功告成!

    小程序管理平台

    账号申请成功之后,就可以登录“微信公众平台 | 小程序”了。在目前这个时间点虽然并不需要马上做什么。本文接下来将对其中重要的菜单功能做简单介绍。

    首页

    内容比较简单,主要是表示小程序的实时访问次数和系统公告。

    开发管理

    用户在使用小程序的时候,需要扫描二维码进入。而这个二维码需要开发者将小程序上传到腾讯服务器之后从腾讯取得。上传过程便在该页面上完成。

    过程也不复杂,一共分为三步:上传代码,提交审核和发布小程序。

    用户身份

    这个画面用来指定小程序项目的管理员和项目成员。其中项目成员又包括开发者和体验者。

    数据分析

    这个画面可以统计小程序的访问数量,对用户来源、性别、年龄分布等进行分析。

    模板消息

    这个画面可以定制微信小程序向客户发送的消息。

    客服消息

    通过这个画面可以指定小程序的客服人员,从而实现小程序的在线客服功能。

    附近的小程序

    当小程序的主体为企业、政府、媒体及其他组织时可以开通此功能。此功能有效时,小程序指定地点以后,用户可以通过微信的“附近的小程序”界面发现该小程序。

    运维中心

    一共有两个页面,分别用于查询小程序的错误日志和对客户端进行监控。

    推广

    用来自定义小程序推广关键字。

    设置

    设置分类中一共有五个页面,这里只介绍前两个。

    基本设置

    顾名思义,这里主要是用来设置小程序的基本信息。内容包括:

    1. 设定小程序名称,小程序头像;
    2. 取得小程序码;
    3. 取得认证;
    4. 设定主题信息;
    5. 其他省略。

    开发设置

    这个页面主要负责和小程序开发相关的设定信息,内容包括:

    1. 取得小程序 ID。每一个发布的小程序都需要唯一的 ID。
    2. 生成小程序秘钥。
    3. 指定服务器域名。小程序可以访问外部网站,可以上传和下载文件。但是对象服务器不是任意的,需要在这里指定。
    4. 其他省略。

    其他

    在画面的右上角,有两个链接“文档”和“社区”分别可以进入小程序开发文档和社区。在实际的学习过程中可以积极利用。

    安装开发工具

    小程序账号申请成功之后的工作就是准备开发环境。

    早期的版本在首页分类中有开发工具的下载链接,最近不知道为什么变成了访问次数统计画面。但是没有关系,可以直接点击这里,便可打开下面的下载地址页面。

    根据操作系统选择合适的下载链接。

    下载完成后打开安装程序,首先是开始画面。

    按下“下一步”按钮。

    按下“我接受”按钮。

    指定适当的安装目录后按下“安装”按钮。

    安装中……

    完成!

    接下来就可以开始微信小程序的开发之旅啦!

    第03课:微信开发者工具介绍

    第04课:小程序构成介绍——配置文件的形式和内容

    第05课:小程序构成介绍——WXML 和 WXSS

    第06课:小程序构成介绍——事件处理和数据绑定

    第07课:小程序开发实例——指南针(上)

    第08课:小程序开发实例——指南针(下)

    第09课:发布小程序

    点击查看课程全部内容

    展开全文
  • 一个程序从源代码到可执行程序的过程

    万次阅读 多人点赞 2018-06-26 10:45:13
    一个程序一个可执行程序的过程:预编译、编译、汇编、链接。 其中,编译是主要部分,其中又分为六部分:词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化。 链接中,分为静态链接和动态链接...




    一个源程序到一个可执行程序的过程:预编译、编译、汇编、链接。
    其中,编译是主要部分,其中又分为六个部分:词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化。
    链接中,分为静态链接和动态链接,本文主要是静态链接。

    一、预编译:主要处理源代码文件中的以“#”开头的预编译指令。处理规则见下
    1.删除所有的#define,展开所有的宏定义。
    2.处理所有的条件预编译指令,如“#if”、“#endif”、“#ifdef”、“#elif”和“#else”。
    3.处理“#include”预编译指令,将文件内容替换到它的位置,这个过程是递归进行的,文件中包含其他文件。
    4.删除所有的注释,“//”和“/**/”。
    5.保留所有的#pragma 编译器指令,编译器需要用到他们,如:#pragma once 是为了防止有文件被重复引用。
    6.添加行号和文件标识,便于编译时编译器产生调试用的行号信息,和编译时产生编译错误或警告是能够显示行号。

    C语言的宏替换和文件包含的工作,不归入编译器的范围,而是交给独立的预处理器。
    C语言中源代码文件的文件扩展名为.c,头文件的文件扩展名为.h,经预编译之后,生成xxx.i文件。
    在C++,源代码文件的扩展名是.cpp或.cxx,头文件的文件扩展名为.hpp,经预编译之后,生成xxx.ii文件。

    二、编译:把预编译之后生成的xxx.i或xxx.ii文件,进行一系列词法分析、语法分析、语义分析及优化后,生成相应的汇编代码文件。

    (结合程序来说明编译的几个步骤)
    有C语言的源代码如下:
    arr[3] = (a+4)*(3+8);

    1.词法分析:利用类似于“有限状态机”的算法,将源代码程序输入到扫描机中,将其中的字符序列分割成一系列的记号
    以上的一行C语言程序,一共有16个空字符,经扫描机扫描之后,产生了16个记号。lex可以实现词法分析。见下表:

    这里写图片描述

    见上图:
    词法分析产生的记号分类有:关键字、标识符、字面量(数字、字符串)、特殊符号(加号、等号等)

    2.语法分析:语法分析器对由扫描器产生的记号,进行语法分析,产生语法树。由语法分析器输出的语法树是一种以表达式为节点的树。上述的代码就是
    各种表达式的组合:赋值表达式、加法表达式、乘法表达式、数组表达式和括号表达式组成的复杂表达式。yacc可以实现语法分析,根据用户给定的规则(不同的编程语言对应不同的语法规则)对记号表进行解析。

    这里写图片描述

    见上图:
    整个语句被看作是一个“赋值表达式”,“=”左边是一个“数组表达式”,右边是一个“乘法表达式”。数组表达式又由两个符号表达式组成,符号表达式就是最小的表达式,之后同理。

    在语法分析的同时,就把运算符的优先级确定了下来,如果出现表达式不合法,——各种括号不匹配、表达式中缺少操作,编译器就会报错。

    3.语义分析:语法分析器只是完成了对表达式语法层面的分析,语义分析器则对表达式是否有意义进行判断,其分析的语义是静态语义——在编译期能分期的语义,相对应的动态语义是在运行期才能确定的语义。
    其中,静态语义通常包括:声明和类型的匹配,类型的转换,那么语义分析就会对这些方面进行检查,例如将一个int型赋值给int*型时,语义分析程序会发现这个类型不匹配,编译器就会报错。

    经过语义分析阶段之后,所有的符号都被标识了类型(如果有些类型需要做隐式转化,语义分析程序会在语法树中插入相应的转换节点),见下图:

    这里写图片描述
    这个语句中的类型都是int型,无须做转换。

    4.优化:*源代码级别的一个优化过程*,例如该语句中的(3+8)的值可以在编译期确定,源代码优化器会将整个语法树转换成中间代码——语法树的顺序表示,十分接近目标代码。
    中间代码有很多种类型,最常见的是“三地址码”和“P-代码”,其中三地址码的基本形式为:x = y op z,表示将变量y和z进行op操作后,赋值给x,op操作可以是加减乘除等。
    经优化之后的语法树为:

    这里写图片描述

    该语句的三地址码:
    t1 = 3 + 8;
    t2 = a + 4;
    t3 = t2 * t1;
    arr[3] = t3;

    t1由数字11代替,省去t3,经优化或的三地址码为:
    t2 = a +4;
    t2 = t2 + 11;
    arr[3] = t2;

    另一个关于中间代码的要点:中间代码使得编译器可以被分成前端和后端,编译器前端负责产生与机器无关的中间代码,编译器后端将中间代码转换为机器代码。
    源代码优化去产生中间代码标志着下面的过程都属于编译器后端,后端主要包括:代码生成器和目标代码优化器。

    5.目标代码生成:由代码生成器将中间代码转换成目标机器代码,生成一系列的代码序列——汇编语言表示。

    6.目标代码优化:目标代码优化器对上述的目标机器代码进行优化:寻找合适的寻址方式、使用位移来替代乘法运算、删除多余的指令等。

    上述的六个步骤完毕之后,编译过程也就告一段落了。最终产生了由汇编语言编写的目标代码

    gcc把预编译和编译两个步骤合并成一个步骤。对于C语言的代码,是用“cc1”这个程序来完成这两步,对于C++代码,对应的程序为“cc1plus”。gcc这个命令只是后台程序的包装,根据不同的参数去调用:预编译编译程序——cc1,汇编器——as,连接器——ld。

    C语言的代码,经编译后产生的文件名为xxx.s。

    三、汇编:将汇编代码转变成机器可以执行的指令(机器码文件)。
    汇编器的汇编过程相对于编译器来说更简单,没有复杂的语法,也没有语义,更不需要做指令优化,只是根据汇编指令和机器指令的对照表一一翻译过来,汇编过程有汇编器as完成。

    经汇编之后,产生目标文件(与可执行文件格式几乎一样)xxx.o(Windows下)、xxx.obj(Linux下)。

    但是,经过预编译、编译、汇编之后,生成机器可以执行的目标文件之后,还有一个问题——变量a和数组arr的地址还没有确定。这就需要链接器来搞定啦~

    四、链接:
    1、历史过程:曾经,程序猿门在编程时,使用纸带作为最原始的存储设备,每当程序需要修改时,都要重新扎一条纸带,扎孔的表示1,不扎的是0,一串串1和0就组成了各种各样的指令——跳转等等….
    每一次的修改都非常痛苦,所以先知们就发明了汇编语言,这种编程语言方便之处在于符号的引用,表示跳转指令不再需要记住一串串0和1,终于可以使用符号——foo来表示这个动作了!
    随着汇编语言的普及,程序的代码量也就开始快速膨胀了,汇编语言说它也撑不住了….不过还好,高级编程语言Fortran、C、C++等一个接一个地问世,语言越来越方便了,追求perfect的人们就想:代码咋写更好呢?可不可以把代码按照功能的不同,分成不同的部分,便于日后的修改和重复使用呢?
    有了这个启发,程序猿们越来越得心应手,他们开始把代码按照功能和性质划分,分别形成不同的功能模块,不同的模块之间又按照各种结构来组织。
    发展到如今,软件的规模越来越大,代码动辄数百万行代码,放在一个模块那是万万不行的,维护起来会非常麻烦,所有现在的大型软件往往拥有成千上万的模块,
    模块之间相互独立又相互依赖。
    新的问题来了,一个程序被分割成这么多模块,最后要怎么把这些模块组合形成一个单一的程序?
    答案就是:模块之间,符号的引用
    这就像是一张画有大树的拼图,叶子、枝干、根系都零散的分布在那些拼图碎片上,想要看到完整的大树,我们就会耐心地把那些碎片拼合在一起。

    这里写图片描述

    这些模块之间同样如此,它们依靠那些凸起和凹陷联系在一起,最终组合成一个完整的程序,这样的过程称为——链接。

    这样基于符号的模块化,使得链接过程在整个程序开发中显得十分重要和突出…..

    2、下面就静态链接,进行分析。
    1.链接:“组装”模块的过程。
    2.链接的内容:把各个模块之间相互引用的部分都处理好,使得各个模块之间能够正确地衔接。(就像拼图,凸起和凹槽的位置一定一一对应,否则…)
    3.链接的过程:地址和空间的分配、符号决议(也叫“符号绑定”,倾向于动态链接)和重定位
    以gcc编译器为例,看基本的链接过程:

    这里写图片描述

    .c文件经过编译器、汇编器之后得到目标文件.o,目标文件再与库进行链接得到可执行文件.out。
    库其实就是一组目标文件的打包,这些目标文件中都是一些常用的代码。

    我们在fun.c模块中定义了函数foo(),在main.c模块中引用了foo()函数,在编译过程当中,编译器并不知道main.c中foo()的地址,所以将调用foo()的指令的目标地址部分搁置,
    等到了链接的阶段,链接器会去找到foo()定义的那个模块,在main.o中填入正确的函数地址,这个修改地址的过程被叫做“重定位”,每个被修正的地方叫“重定位入口”。

    这里写图片描述

    以上就是一个程序从源代码到可执行程序的大致过程,这是博主根据《程序员的自我修养——链接、装载与库》来整理的,有兴趣的同学可以自己去琢磨琢磨~





    原博客地址: https://blog.csdn.net/qq_39755395/article/details/78293733
    转载注明出处
    展开全文
  • JavaFX入门():我的第一个JavaFX程序

    万次阅读 多人点赞 2015-11-28 19:44:37
    JavaFX简介JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计、创建、测试、调试和部署富客户端程序,并且和Java一样跨平台。JavaFX发展历史2008年12月05日 Sun微系统公司今天正式发布了基于Java...

    JavaFX简介

    JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计、创建、测试、调试和部署富客户端程序,并且和Java一样跨平台。

    JavaFX发展历史

    2008年12月05日 Sun微系统公司今天正式发布了基于Java语言的平台JavaFX 1.0。因为当时富互联网应用(RIA,Rich Internet Application)正火,具有代表性的有:Adobe公司的Flex,微软的Silverlight和Oracle的JavaFX,还有HTML5+CSS3+JavaScript组合。感觉当时Oracle推出JavaFX主要是为了和Adobe的Flex和微软的Silverlight竞争。当然,随着HTML5的盛行,在RIA开发上这三者都慢慢地退出了历史舞台。HTML+CSS+JS有了一统天下的趋势。所以后来,Flex捐赠给了Apache,成为旗下的一个开源项目,Silverlight停止了更新。其实,个人挺喜欢Silverlight技术的。JavaFX 1.0的时候开发者需使用一种名为JavaFX Script的静态的、声明式的编程语言来开发JavaFX应用程序。因为JavaFX Script将会被编译为Java字节码,程序员可以使用Java代码代替。
    JavaFX不用于开发RIA了,但是JavaFX还可以用来开发桌面程序以及移动设备上的程序。但是貌似开发移动应用,各个平台都有自己的SDK,比如开发Android和ISO应用都会使用原生地API,应该很少有人会使用像JavaFX或者QT这种第三方的技术吧(个人见解)!所以,JavaFX剩下的能使用的地方就是桌面应用程序了!JavaFX 2.0之后的版本摒弃了JavaFX Script语言,而作为一个Java API来使用。因此使用JavaFX平台实现的应用程序将直接通过标准Java代码来实现。而且从JDK 7u6 开始,JavaFX被内置到Java SE中,原来如果要开发JavaFX程序,需要单独下载JavaFX的SDK,但是现在不需要了。
    从Java8开始,JavaFX的版本也更新为JavaFX8。现在的JavaFX主要由原来Java Swing工作组进行维护,由于JavaFX的种种优点,在Java桌面开发方面JavaFX会慢慢取代原来的Java Swing。我觉得现在的JavaFX和微软的WPF比较像,JavaFX现在的竞争对手应该是用于桌面开发WPF。WPF是一门很赞的技术,自定义控件可以将程序打造得很惊艳。Windows7中的Windows Media Center就是使用WPF技术开发的。而且WPF已经推出多年,较JavaFX更加成熟。但是JavaFX有跨平台的优势!
    不过话说回来,以后桌面开发肯定会越来越少,更多的是移动App开发和Web程序开发。但是,在可预见的未来,桌面开发肯定不会消亡。

    JavaFX特点

    官方对于JavaFX的解释如下:
    JavaFX Overview
    JAVAFX概览
    我个人主要觉得有一下几点:
    1. JavaFX是一个Java库,包括用Java写成的类和接口。所以使用JavaFX写的程序可以跨平台运行。而且现在大量成熟的Java库都可以为JavaFX所使用。
    2. 内置大量UI控件和CSS支持。层级样式表(CSS)将外观和样式与业务逻辑实现进行了分离。图形设计师可以使用FXML语言(一种XML语言)来表述图形界面,使用CSS来定制程序的外观和样式。程序员可以使用Java代码来表述业务逻辑。
    3. 内置Canvas API以及特效,动画等可以让你制作出类似Flash的程序。
    3. 本身提供对三维图形的支持,而且支持硬件加速。
    4. 还有就是类似WPF的属性绑定。
    5. 此外,JavaFX中还可以放置Java Swing组件,支持WebView即使用HTML编写的页面。
    当然还有很多,这里我只说了我了解到的一些特性。具体可参看上面给出的官方链接中的描述。

    JavaFX架构

    这是Oracle官方对JavaFX框架架构的一个描述,大概了解下,看不懂关系不大。参考文献:Understanding the JavaFX Architecture
    JavaFX
    具体在用户看来,一个JavaFX程序应该是这样子的:一个Stage,Stage中包含一个Scene,一个Scene中可以包含多个Control。这里的Stage就相当于我们的一个Windows或者说窗体,然后窗体中是用来容纳内容的Scene,我们可以在Scene中添加我们的布局控件,UI控件形成我们最终的UI界面。

    JavaFX版HelloWorld

    HelloWorld程序

    下面以一个简单的程序说明怎么开发JavaFX程序。因为Java8内置了JavaFX,所以你如果安装的是JDK8,不需要额外的配置,就可以直接开发JavaFX程序。
    我们打开Eclipse,新建一个Java Project。对,就是一个普通的Java工程。然后新建一个类,该类需要继承javafx.application.Application类。然后编写代码。下面的程序实现这样一个功能:点击Button的时候,改变Button的内容。。

    package cn.tzy.javafx.hello;
    
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.stage.Stage;
    
    public class HelloApplication extends Application {
    
        @Override
        public void start(Stage primaryStage) throws Exception {
            /**
             * 首先我们创建一个Button,当我们点击Button的时候,改变Button的内容。
             */
    
            Button btnHello = new Button("Hello");
            /**
             * 设置btnHello按钮点击事件
             * 这里使用了Java8的Lambda表达式。setOnAction的参数为EventHandler<ActionEvent> value
             * EventHandler为一个接口,所以我们有三种方式实现EventHandler接口:
             * 1. 创建一个内部类
             * 2. 创建一个匿名类
             * 3. 使用Lambda表达式(适用于函数体不大的情况)
             */
            btnHello.setOnAction(event->{
                btnHello.setText("Hello World, I am JavaFX!");
            });
    
            /**
             *  BorderPane是一个用于布局的Pane,BoerderPane将面板分割为上下左右中五部分。
             *  我们可以将UI控件放置在BorderPane的上下左右和中间。
             *  这里将将Button放置在中间。
             */
            BorderPane pane = new BorderPane();
            pane.setCenter(btnHello);
    
            // 将pane加入到Scen中
            Scene scene = new Scene(pane, 500, 500);
    
            // 设置stage的scen,然后显示我们的stage
            primaryStage.setScene(scene);
            primaryStage.setTitle("Hello World");
            primaryStage.show();
    
        }
    
        public static void main(String[] args) {
            // JavaFX中main函数必须需要调用launch函数
            launch(args);
        }
    
    }
    

    运行结果如下:
    Hello JavaFX

    HelloWorld程序说明

    1. 所有的JavaFX主程序都需要继承Application类。
    2. 继承了Application类的子类必须重写start方法。start方法中可以进行UI控件的布局。当JavaFX程序启动的时候,会自动调用start方法。
    3. mian函数中必须调用launch方法,该方法会启动JavaFX程序。
    4. JavaFX程序用户界面的顶层是stage,代表窗体。stage中是scene,scene中可以包含各种UI控件和布局控件,共同组成用户UI。
      当然,这只是一个入门的JavaFX程序,还看不出JavaFX技术的优点。

    这一节我们用纯Java代码写了一个很简单的JavaFXML程序,下一节:JavaFX入门(二):JavaFX和FXML 中我们使用FXML编写程序界面,然后用Java书写后台逻辑实现这一节中相同的功能。

    展开全文
  • 微信小程序尝鲜一个月现状分析

    万次阅读 多人点赞 2017-02-10 00:49:10
    希望在张小龙,在企鹅的带领下,走出区别于原生开发的另条移动开发的道路,我也是一直关注着,知道1月9号,微信小程序终于对外开放了,作为第批内测开发者,我也是在第时间启动了微信小程序的开发。...
  • 一个完整的Java。源程序应该包括下列部分: ...  public classDefinition,公共类定义部分,至多只有一个公共类的定义,Java语言规定该Java源程序的文件名必须与该公共类名完全一致。  classDefinitio...
  • CUDA编程()第一个CUDA程序

    万次阅读 多人点赞 2016-03-28 22:52:04
    CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
  • 一个C/C++程序从编译到最终生成可执行文件的全过程分析C源程序-&gt;编译预处理-&gt;编译-&gt;优化程序-&gt;汇编程序-&gt;链接程序-&gt;可执行文件 1.编译预处理 读取c源程序,对其中...
  • 需要求3长方体的体积,请编写一个基于对象的程序。数据成员包括length(长)、width(宽)、height(高)。要求用成员函数实现以下功能: (1)由键盘分别输入3长方体的长宽高; (2)计算长方体的体积; (3...
  • 程序设计规范(

    万次阅读 多人点赞 2019-06-06 10:25:18
    正好最近我也要开发小程序,所以今天我就从设计方面聊微信小程序设计规范,埋上设计中可能会出现的坑,让你能更好的完成你的小程序~ 设计尺寸 微信小程序的设计只需要以iPhone6屏幕尺寸750x1334px为视觉稿...
  • 如何学习微信小程序? 学习微信小程序所需基础

    万次阅读 多人点赞 2020-03-30 16:23:19
    程序种新的开放能力,开发者可以快速地开发一个程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。 说的通俗一些,微信小程序就是微信中非常小巧的程序(这不废话......),我们打开...
  • 程序一个生态。为什么?这是我自己瞎做的一个定义,说错了请大家见谅:微信生态:APP Store:这是苹果公司的大平台(见上图),它给所有开发商提供统一的入口,在这生态里面他们用统一的语言做开发或者做商业...
  • java语言开发微信小程序

    万次阅读 多人点赞 2018-10-10 17:14:29
    这篇文章分部分,这部分先介绍小程序开发的一些基础知识,包括需要做的准备。按照习惯,先贴一个程序的文档链接,API.小程序 注册小程序 要开发,首先自然需要有一个账号。在浏览器搜索“微信公众平台”,或者...
  • Android开发环境集成了一个容易使用但同时很强大的程序测试框架,通过这框架,可以测试程序的各个方面,比如测试程序的Activity、Content Provider、Service等。 测试方式也可以根据开发环境而有不同的选择,...
  • 编译方式  编译程序的功能就是把...词法分析阶段是编译过程的第阶段,主要任务是对源程序从前到后(从左到右)逐个字符进行扫描,从中识别出一个个“单词”符号。词法分析程序输出的”单词“常采用二元组的方式,
  • 程序化广告生态 下图展示的是程序化广告生态链的各参与者之间的分工协作,并用线条表示了现金流方向、广告服务方向以及数据提供方向。 相对于传统的网络广告产业链,程序化市场的新角色及技术服务主要分为...
  • Android应用程序模型:应用程序,任务,进程和线程 大多数操作系统,在应用程序所寄存的可执行程序映像(如Windows...由于Android应用固有的灵活性,当实现这些不同方面的时候有一些基本术语需要加以理解:一个Androi
  • C++“窗口”程序设计启蒙

    万次阅读 多人点赞 2012-05-11 08:09:13
    写作目的包括:(1)让学生通过模仿,开发出类似风格的窗口程序;(2)以此为起点,课外通过案例教程等参考资料,学习开发更多的功能实用的程序;(3)体会到程序设计能力的核心并不在界面,从而能潜心提高程序设计...
  • [微信小程序]微信小程序知识总结及案例集锦

    万次阅读 多人点赞 2016-12-01 10:36:55
    前言 今天把之前收集的微信小程序案例,给大家共享出来,一起学习!学习的别人东西是自己...回归正题,今天着重给大家15微信小程序案例,需要的可以下载看看!首先在介绍源码之前,还是给大家讲讲微信小程序相关的知识.什
  • 程序 与 App 与 H5 之间的区别

    万次阅读 多人点赞 2018-11-21 11:35:18
    根据微信官方的说明,微信小程序的运行环境有 3 平台,iOS 的 WebKit(苹果开源的浏览器内核),Android 的 X5 (QQ 浏览器内核),开发时用的 nw.js(C++ 实现的 web 转桌面应用)。 平台 渲染 js 运行环境 ...
  • 程序依赖图(Program Dependence Graph)理解

    千次阅读 2019-05-27 19:13:19
    程序依赖图(Program Dependence Graph)是程序种图形表示,它是带有标记的有向...系统依赖图是分析和理解程序的基础工具之,其在面向对象的程序上的研究渐趋成熟,而在面向方面程序上的研究才刚刚开始。 处理...
  • Web应用程序  (1)什么是Web应用程序  应用程序种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览 器端/服务器端应用程序,这类应用程序一般借助浏览器来运行。 ...
  • 最新100微信小程序

    万次阅读 2017-06-24 19:26:57
    1、团队日历 通过日历管理团队协同任务。在团队内指派、抄送和...同程小程序款无需下载安装,只需扫描二维码即可 实现产品订购和增值服务的应用,目前开放了火车票、 飞机票、汽车票、酒店、景点等多产品
  • c++即时通讯程序

    千次阅读 2017-03-06 15:24:57
    记录下我上大学的第程序项目。第次写程序,遇到了好多挫折,也学到了好多的书本学不到的知识。...本程序分为服务器和客户端两个程序,服务器使用libevent+qt+protobuf+mysql基本结构,客户端使用qt+pro
  • 驱动程序和应用程序通信方法

    千次阅读 2009-06-18 15:18:00
    要通信就涉及到3个方面: 1.应用程序与驱动程序通信2.驱动程序与应用程序通信3.数据传输下面分别讨论1。应用程序与驱动程序通信1-1 应用程序实现与驱动通信的过程: ---用CreateFile打开设备,---用DeviceIoControl和...
  • 程序,进程,线程的区别和联系

    万次阅读 多人点赞 2018-08-26 22:27:18
    1)程序只是组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。进程是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待...
  • 微信小程序测试方案

    千次阅读 2019-05-19 15:13:42
    程序主要分为两个主要的部分:view模块和service模块。view模块负责UI展示,它由wxml和wxss转换后的代码以及微信提供的辅助模块组成。个view模块对应个webview组件,小程序支持多个view存在,view模块通过微信...
  • iVX的简介 1、iVX是什么 ...iVX属于首款零代码开发语言,它去掉了程序语法,但保留程序逻辑。它的组件体系如下: 2、iVX能干什么 3、iVX中的0代码 4、如何使用iVX ...
  • 使用gdb调试程序完全教程

    万次阅读 多人点赞 2016-06-14 14:21:48
    程序的调试过程主要有:单步执行,跳入函数,跳出函数,设置断点,设置观察点,查看变量。 本文将主要介绍linux下的强大调试工具是怎么完成这些工作的。之所以要调试程序,是因为程序的运行结果和预期结果不一致,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 888,180
精华内容 355,272
关键字:

一个程序包括两方面