首页编程java编程java ivy是什么,android acitivy和window的区别

java ivy是什么,android acitivy和window的区别

编程之家2023-10-14106次浏览

各位老铁们,大家好,今天由我来为大家分享java ivy是什么,以及android acitivy和window的区别的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

java ivy是什么,android acitivy和window的区别

java学习线路是怎样的

要学习Java,你首先得了解一下什么是java:

Javaweb是用Java技术来解决相关web互联网领域的技术总和。说的简单的就是写网站的一种语言。一般分为前端和后端两种方向,前端所做的东西就像幕前表演的演员,所做的就是让网页看起来顺眼,用起来顺心,而后端则属于处理数据,让程序处理速度、能力不断优化,属于幕后。前后端的配合才能是一个网站正式投入使用。

接下来就是关于java体系主要涉及的三个方面——J2SE/J2EE/J2ME(KJAVA)

java ivy是什么,android acitivy和window的区别

0.J2SE

新手最初学习的时候先要从J2SE开始学起,所包含的内容前端的学习都是需要不断的学习,学一天停一停相当于白学,学习效果很差,如果你想有人一起学习可以来这个扣裙,首先是132中间是667最后是127都是零基础的同学,大家相互鼓励共同努力只是学着玩就不建议来了!!!主要分为:面向对象概念的理解、Java基本语法的学习,Java桌面图形界面应用程序的开发,掌握常用的Java API等(关键是要学会怎样查阅)。

重点:Java基本语法(循环结构,数据类型,数组,运算符等)、Swing,awt,事件机制、文件输入输出流处理等

java ivy是什么,android acitivy和window的区别

难点:面向对象思想的理解(接口、类等)、线程、socket网络编程等

1.J2EE

J2SE之后,便可以开始慢慢过渡到J2EE。要学习J2EE除了java之外,还得学习比如数据库技术,网页编程技术等等。

J2EE有三个必学的框架,分别是Struts、spring和hibernate。他们之间的关系,简单来说这三个框架=J2EE,而J2EE≠这三个框架。那么J2EE都包含了哪些技术呢?就先给大家简单介绍几个吧:

JDBC:Java数据库连接对象,基础中的基础,Hibernate也只是对它的封装而已 JNDI: Java命名与目录接口,J2EE重要规范之一

EJBS:上面已经提到过了

RMI:提供远程调用方法的支持,主要用于程序分布式开发

JMS: Java消息服务,中间件技术

JAVA IDL:提供J2EE平台与CORBA交互能力和互联能力的技术

JTS:组件事务监视器

JTA:事务划分的一个技术

JAVAMAIL: Java中的邮件技术

JAF: Java启动框架,没研究过

Log4j,一款日志处理的框架应用

Junit:单元测试的好帮手

freemarker、velocity:两款不错的模板引擎

与Flash的交互Flex:目前很多的SNS应用就是使用到了这个技术

Web services:例如天气预报的制作,就靠它。

SOA:面向服务架构,未来技术发展的趋势之一

……

虽然罗列了很多,但最核心也是最需要学习的只有:JDBC、JSP、servlet和JavaBean,后面三个也是学习SSH的基础(Struts\Spring\Hibernate的简称).

当然,找工作的前提除了把Java学习好,还会有一些其他的技术也是必须要掌握的。

除了这些技术的东西,在这阶段,大家更多的是会接触到比如设计模式的东西,比如工厂模式、桥梁模式、单例模式等等,还要学习建模思想和软件生命周期等等。

这些是升华大家编程思想的手段和途径。

2.J2ME

最后就是第三阶段——手机程序的开发。

开发手机程序技术其实蛮简单的,难点在于优化,比如怎么让你写的程序尽量的节约手机资源,“代码诚可贵,手机价更高“,所以不得不比PC机多考虑很多成本和实用性问题。.

J2ME的学习,不仅仅是在模拟器上测试,若有条件真机测试才是最佳方式,毕竟真机和模拟器的效果之间差别是很大的。

最后再给大家提供一个开发工具——eclipse

功能很强大,也很好拓展其他的功能。当然也可以选择JCreator,或者最好就直接用记事本。等你熟悉了Java代码之后,就可以使用JBuilder、eclispe或者netbeans这一类的工具了。

android acitivy和window的区别

我想大多数人,对于这3个东西的概念能区分,但是具体区别在哪却很难说出来。

我这里根据我个人的理解来讲讲我个人对这3个概念的理解。当然这里设计到通用的事件窗口模型等通用GUI设计,我这里就不打算讲了,纯粹从概念上来进行区分。

Activity是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API,如onKeyEvent, onTouchEvent等。并维护应用程序的生命周期(由于android应用程序的运行环境和其他操作系统不同,android的应用程序是运行在框架之内,所以他的应用程序不能当当从进程的级别去考虑,而更多是从概念上去考虑。android应用程序是由多个活动堆积而成,而各个活动又有其独立的生命周期)。Activity本身是个庞大的载体,可以理解成是应用程序的载体,如果木有Activity,android应用将无法运行。也可以理解成android应用程序的入口。Acivity的实例对象由系统维护。系统服务ActivityManager负责维护Activity的实例对象,并根据运行状态维护其状态信息。

但在用户级别,程序员可能根愿意理解成为一个界面的载体。但仅仅是个载体,它本身并不负责任何绘制。Activity的内部实现,实际上是聚了一个Window对象。Window是一个抽象类,它的具体是在android_src_home/framework/policies/base/phone/com/android/internal/policy/impl目录下的PhoneWindow.java。

当我们调用Acitivity的 setContentView方法的时候实际上是调用的Window对象的setContentView方法,所以我们可以看出Activity中关于界面的绘制实际上全是交给Window对象来做的。绘制类图的话,可以看出Activity聚合了一个Window对象。

下面是PhoneWindow中的setContentView方法的实现:

@Override

public void setContentView(View view, ViewGroup.LayoutParams params){

if(mContentParent== null){

installDecor();

} else{

mContentParent.removeAllViews();

}

mContentParent.addView(view, params);

final Callback cb= getCallback();

if(cb!= null){

cb.onContentChanged();

}

}

Window内部首先判断mContentParent是否为空,然后调用installDecor方法(安装装饰器),我们看看这个方法如何实现的

private void installDecor(){

if(mDecor== null){

mDecor= generateDecor();

mDecor.setIsRootNamespace(true);

}

if(mContentParent== null){

mContentParent= generateLayout(mDecor);

mTitleView=(TextView)findViewById(com.android.internal.R.id.title);

if(mTitleView!= null){

if((getLocalFeatures()&(1<< FEATURE_NO_TITLE))!= 0){

View titleContainer= findViewById(com.android.internal.R.id.title_container);

if(titleContainer!= null){

titleContainer.setVisibility(View.GONE);

} else{

mTitleView.setVisibility(View.GONE);

}

if(mContentParent instanceof FrameLayout){

((FrameLayout)mContentParent).setForeground(null);

}

} else{

mTitleView.setText(mTitle);

}

}

}

}

在该方法中,首先创建一个DecorView,DecorView是一个扩张FrameLayout的类,是所有窗口的根View。我们在Activity中调用的setConctentView就是放到DecorView中了。这是我们类图的聚合关系如下:

Activity--->Window--->DecorView

这是我们得出这3个类之间最直接的一个关系。

我们详细分析一下,类对象是如何被创建的。

先不考虑Activity的创建(因为 Acitivity的实例由ActivityManager维护,是在另一个进程设计到IPC的通信,后面会讲到),而考虑Window和View的创建。

Activity被创建后,系统会调用它的attach方法来将Activity添加到ActivityThread当中。我们找到Activity的attach方法如下:

final void attach(Context context, ActivityThread aThread,

Instrumentation instr, IBinder token, int ident,

Application application, Intent intent, ActivityInfo info,

CharSequence title, Activity parent, String id,

Object lastNonConfigurationInstance,

HashMap<String,Object> lastNonConfigurationChildInstances,

Configuration config){

attachBaseContext(context);

mWindow= PolicyManager.makeNewWindow(this);

mWindow.setCallback(this);

if(info.softInputMode!= WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED){

mWindow.setSoftInputMode(info.softInputMode);

}

mUiThread= Thread.currentThread();

mMainThread= aThread;

mInstrumentation= instr;

mToken= token;

mIdent= ident;

mApplication= application;

mIntent= intent;

mComponent= intent.getComponent();

mActivityInfo= info;

mTitle= title;

mParent= parent;

mEmbeddedID= id;

mLastNonConfigurationInstance= lastNonConfigurationInstance;

mLastNonConfigurationChildInstances= lastNonConfigurationChildInstances;

mWindow.setWindowManager(null, mToken, mComponent.flattenToString());

if(mParent!= null){

mWindow.setContainer(mParent.getWindow());

}

mWindowManager= mWindow.getWindowManager();

mCurrentConfig= config;

}

我们看红色的代码部分,就是创建Window对象的代码。感兴趣的同学可以跟踪去看看具体是如何创建的。其实很简单,其内部实现调用了Policy对象的makeNewWindow方法,其方法直接new了一个PhoneWindow对象如下:

public PhoneWindow makeNewWindow(Context context){

return new PhoneWindow(context);

}

这时我们已经可以把流程串起来,Activity创建后系统会调用其attach方法,将其添加到ActivityThread当中,在attach方法中创建了一个window对象。

下面分析View的创建。我们知道Window聚合了DocerView,当用户调用setContentView的时候会把一颗View树仍给DocerView.View树是已经创建好的实例对象了,所以我们研究的是DocerView是个什么东西,它是如何被创建的。

我们回头看看Window实现里边的setContentView方法,我们看上面代码的红色部分setContentView-> installDecor-> generateDecor.

generateDecor直接new了一个DecorView对象:

protected DecorView generateDecor(){

return new DecorView(getContext(),-1);

}

我们可以去看看DecorView的实现,它是PhoneWindow的一个内部类。实现很简单,它默认会包含一个灰色的标题栏,然后在标题栏下边会包含一个空白区域用来当用户调用setContentView的时候放置用户View,并传递事件,这里不做详细分析,感兴趣同学可以自己研究研究。

当DecorView创建好之后再回到Window中的setContentView方法中来,见上面代码蓝色部分,调用

mContentParent.addView(view, params);

来将用户的View树添加到DecorView中。

到这时为止,我想我们已经很清晰的认识到它们3者之间的关系,并知道其创建流程。

现在总结一下:

Activity在onCreate之前调用attach方法,在attach方法中会创建window对象。window对象创建时并木有创建Decor对象对象。用户在Activity中调用setContentView,然后调用window的setContentView,这时会检查DecorView是否存在,如果不存在则创建DecorView对象,然后把用户自己的View添加到DecorView中。

Java学习路线

根据个人实际的经历,结合多种书籍,特别整理出了下面的java学习路线:

一、Java SE部分

1、java基础:基础语法;面向对象(重点);集合框架(重点);常见类库API;

2、java界面编程:AWT;事件机制;Swing;

3、java高级知识:Annotation;IO和NIO、AIO;多线程、线程池;阻塞、非阻塞、异步网络通信;反射、动态代理;

二、JDBC编程

4、SQL基础:基础SQL语句;基本查询;多表查询;子查询;结果集的交、并、差运算;

5、JDBC基础:常见数据库用法;JDBC操作常见数据库;RowSet与离线结果集;数据库连接池;事务管理、批处理;

6、JDBC进阶:存储过程、函数;触发器;理解JCBC的不足;掌握ORM工具优势和设计;

三、DHTML编程

7、HTML基础:基本HTML标签;常见表单标签;DIV+CSS布局;

8、JavaScript知识:javascript基本语法;javascript基本对象特征;Json语法;深刻理解javascript的动态特征;

9、Dom和事件机制:DOM操作、编程;常见浏览器事件机制;掌握用户交互技巧;

四、XML编程

10、XML基础:XML基础规则;DTD和SCheme;XML和样式单;

11、XML进阶:DOM、SAX和JAXP;dom4j、JDOM等工具;XQuery和XQJ;基于XML的数据交换;

12、Web Service:JAX_WS2、SAAJ规范;WSDL和SOAP协议;CXF框架、拦截器;CXF整合Spring;

五、Java Web编程

13、Web编程基础:Tomcat服务器;Jsp语法、EL、内置对象;Servlet API;Servlet 3.0注解;Listener和Filter;

14、Web编程进阶:自定义标签库;MVC和DAO、Servlet、标签的作用;JSTL、DisplayTag等常见标签库用法;

15、Web编程原理:请求/响应、架构;Http协议;深刻理解Jsp运行原理;掌握Web容器底层的线程池、socket通信、调用Servlet的命令模式;

六、Ajax编程:

16、Ajax编程:XML HttpRequest和异步请求;发送请求和处理响应;常见Ajax库(Prototype、Jquery、ExtJs、DWR)用法;结合Http协议、异步请求深入研究ajax库的设计;

七、Android开发

17、Android基础:Android开发调试环境;Android应用结构;界面组件与界面编程;资源管理;四大组件;

18、Android中级:文件IO和SQLite;图形、图像与动画;音频、视频的录制与播放;传感器编程;GPS应用;

19、Android高级:网络编程与Web Service;OpenGL_ES 3D开发;整合Google服务;使用NDK开发;java和c相互调试;

八、轻量级Java EE

17、Struts2:MVC与struts体系;Action和Result;国际化和标签库;文件上传、下载;类型转换和输入检验;拦截器与插件开发;

18、Hibernate:ORM与持久化映射;关系映射、继承映射;延迟加载、性能调优;HQL查询、条件查询、SQL查询;二级缓存和查询缓存;

19、Spring:IoC与Bean配置、管理;Bean生命周期;SP、EL;AOP与事务权限控制;S2SH整合开发;Spring整合Jpa;

九、经典Java EE

20、JSF<选学>:MVC与JSF设计理念;托管Bean与导航模型;JSF流程与事件机制;JSF标签库;类型转换与输入检验;

21、EJB及相关技术:JNPI与RMI;会话Bean及其生命周期;IoC与EJB拦截器;JMS与MDB;会话Bean与Web Service;

22、JPA:ORM框架与JPA规范;JPA注解与常用API;JTA事务与事务管理;JPQL查询;EJB、JPA整合;

十、Java拓展、进阶:

23、Java EE实践与架构:Ant+Ivy或Maven;SVN、CVS;深刻理解10种以上设计模式;掌握各种Java EE架构及各自优势;

24、Workflow:Workflow规范及功能;JBPM等workflow框架;多次重构、反复思考;大型项目经验;

25、Java EE进阶:掌握各MVC框架运行原理、能开发类似框架;掌握Spring、HiveMind、AspectJ等框架原理、能开发类似工具;掌握Hibernate、iBatis等框架原理,能开发类似工具;深入研究EJB机制、大致了解应用服务器的实现;

希望对您有所帮助!~

文章到此结束,如果本次分享的java ivy是什么和android acitivy和window的区别的问题解决了您的问题,那么我们由衷的感到高兴!

为什么java需要包,JAVA中为什么要有包装类,作用是什么java静态是什么?Java中的静态方法是什么