Abstract Mobile Objects in Java
- 格式:pdf
- 大小:115.49 KB
- 文档页数:11
java英文参考文献Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。
Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
java英文参考文献范本一:[1] 冯燕奎, 赵德奎. JSP实用案例教程[M] 清华大学出版社, 2004, 5: 70-100[2] 王家华软件工程[M] 东北大学出版社2001年3月303页[3] 王宜贵软件工程[M] 北京:机械工业出版社,2002:20-79[4] 孙卫琴精通struts[M]电子工业出版社 2004年8月 50-70[5] 孙卫琴精通hibernate[M]电子工业出版社 2005年4月 100-120[6] 张洪斌 java2高级程序设计[M]中科多媒体出版社 2001年11月 85-90[7] Jim Arlow UML2.and the Unified Process[M]机械工业出版社 2006年6月 30-40[8] 林信良 spring2.0技术手册[M]电子工业出版社 2006年6月 50-100[9] 熊节、林仪明、张凯峰、陈玉泉等主编[《CSDN社区电子杂志 Java杂志》创刊号][10]《程序员》杂志 2007 年第4期[11] 耿祥义编著.JSP基础编程[M].清华大学出版社,2004.55-162[12]徐建波,周新莲.Web设计原理于编程技术[M].中南大学出版社,2005.185-193[13] 孙鑫编著.Java Web开发详解[M].电子工业出版社,2006.189-274[14] 林上杰,林康司编著.JSP2.0技术手册[M].电子工业出版社,2004.3-6[15] 萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,1998.[16] 蔡剑,景楠.Java Web应用开发:J2EE和Tomcat[M].北京:清华大学出版社,2004.java英文参考文献范本二:[1]王海涛,-贾宗璞.基于Struts和Hibernate的Web应用开发[J].计算机工程,2011,37(9):[2]傅鹏,殷旻昊.基于Structs+Spring+Hibernate+Ajax技术的科研管理系统设计[J].软件导刊,2009, 8(1):135-136.[3]龚瑜江,红黄永.基于Struts的Web开发[J].计算机与数字工程,2009,37(232):58-62.[4]李峰,刘彦隆. 基于SSH框架与jquery技术的Java Web开发应用[J].科技情报开发与经济,2010,20(6):106-109.[5]赵洋,张丽,王恩东,张素宁.基于Structs+Spring+Hibernate的J2EE的架构研究[J].现代电子技术,2009,2(289):107-110.[6]许川佩,张民,张婧.基于Ajax的J2EE安全应用框架[J].计算机工程,2010,36(4):110-111.[7]陈正举.基于HIRBERNATE的数据库访问优化[J].计算机应用与软件,2012,29(7):145-149.[8]李宁,李战怀.基于黑盒测试的软件测试策略研究与实现[J].计算机应用研究2009,26(3):924-926.[9] Zoya Ali. Designing Object Oriented Software Applications within the Context of Software Frameworks[D]. Ohio State University,2011.[10] Rachit Mohan Garg, YaminiSood, Balaji Kottana, Pallavi Totlani. A Framework Based Approach for the Development of Web Based Applications Waknaghat[J].Jaypee University of Information Technology,2011,1(1):1-4.[11]飞思科技产品研发中心,《JSP应用开发详解(第二版)》,北京:电子工业出版社,2004。
java毕业论文范文5篇Java语言是编程语言史上的一个里程碑,在此基础上形成的Java Applet技术是综合了计算机图形学、多媒体技术、网络技术的新技术,近年来在很多领域得到了快速的发展和应用。
*是小编为大家整理的java的毕业论文范文,仅供参考。
java毕业论文范文篇一:学生姓名_______ _学号___________专业____ 班级____ 指导教师200 年月1.Java语言的出现自从1946年世界上第一台电子计算机问世以来,计算模式的发展经历了三个阶段:集中计算模式、分散计算模式和网络计算模式。
Internet的出现,为在网络计算模式下的科学计算和信息处理提供了良好平台。
然而,要充分利用网络计算模式的功能与效益,平台的运行环境是个制约因素,而Java语言和Java技术则是解决这一问题的最佳途径。
1991年,SUN公司的Jame Gosling,Bill Joe等人试图为电视、烤箱等家用电器开发一种交互式的软件系统,这种应用需要的是那种小而可靠的系统,它能够移植,并且实时性好,适用于网络分布环境。
流行的C++是自然的选择。
不过,开发过程中遇到的许多难以克服的困难使他们意识到必须彻底解决问题了,最终,开发成功了一个名为Oak的软件,此中蕴藏着Java的原型,当时,并未引起人们的注意。
1994年下半年,随着Internet的迅猛发展,环球信息网WWW的快速增长,促进了Java语言研制的进展,使得它逐渐成为Internet上倍受欢迎的开发与编程语言。
1995年5月Java正式问世,一些著名的计算机公司纷纷购买了Java语言的使用权,如Microsoft、IBM、Netscape、Novell、Apple、DEC、SGI等。
因此,Java语言被美国著名杂志PC Magazine评为1995年十大优秀科技产品(计算机类仅此一项入选)之一,随之大量出现了用Java编写的软件产品,受到工业界的重视与好评,认为“Java是八十年代以来计算机界的一件大事”。
关于java英文参考文献Java, a versatile programming language, has been a cornerstone of software development since its inception in the mid-1990s. Its object-oriented nature and platform independence make it a popular choice for developers worldwide.The language's extensive ecosystem is well-documented in numerous scholarly articles and books, offering insights into its design principles and practical applications. For beginners, "Head First Java" by Kathy Sierra and Bert Batesis a recommended starting point, blending engaging narratives with technical explanations.As one progresses, "Effective Java" by Joshua Bloch provides a more in-depth look at the language's best practices, catering to intermediate and advanced programmers. It covers topics such as exception handling and concurrency, which are crucial for writing robust Java applications.For a comprehensive understanding of Java's underlying mechanisms, "Java Concurrency in Practice" by Brian Goetz et al. is an invaluable resource. It delves into the complexities of multi-threading, a critical aspect of modern software development.When exploring Java's integration with web technologies, "Java Web Services" by William C. Crawford provides a clearguide to building and consuming web services, a common requirement in today's interconnected applications.Lastly, for those interested in the broader implications of Java in enterprise environments, "Enterprise Integration Patterns" by Gregor Hohpe and Bobby Woolf offers a collection of design patterns that facilitate the building ofdistributed systems.These references not only serve as educational tools but also as a testament to the enduring influence of Java in the field of computer science.。
一、IntroductionJava programming language is one of the most widely used and popular programming languages in the world. Since its initial release in 1995, Java has g本人ned widespread adoption in various fields and industries, including web development, mobile application development, enterprise software development, and scientificputing. As a result, there is a large body of literature and reference materials av本人lable for Java programming, providing valuable insights, best practices, and solutions tomon challenges.二、Java Language SpecificationThe Java Language Specification (JLS) is the official reference guide for the Java programming language, providing a det本人led andprehensive overview of the language syntax, semantics, and core libraries. Written by the language designers themselves, the JLS serves as the authoritative source for understanding the intricacies of Java, including its object-oriented features, data types, control structures, and exception handling. The latest version of the JLS, for Java 17, is av本人lable online for free and is an essential resource for any serious Java programmer.三、Effective Java by Joshua BlochEffective Java, written by Joshua Bloch, is a widely accl本人med book that provides practical guidance and best practices for writing high-quality, efficient, and m本人nt本人nable Java code. The book covers a wide range of topics, including object creation, method design, concurrency, and serialization, offering valuable insights and rmendations based on Bloch's extensive experience as a Java architect at Sun Microsystems and Google. With its clear and concise explanations, as well as numerous code examples, Effective Java is an indispensable resource for both novice and experienced Java developers.四、Java Concurrency in Practice by Brian Goetz et al. Concurrency is a crucial aspect of modern software development, and Java provides powerful features for writing concurrent programs. Java Concurrency in Practice, authored by Brian Goetz and his colleagues, offers aprehensive and in-depth exploration of the Java platform's concurrency utilities, threading models, and best practices for writing concurrent and parallel code. The book also covers advanced topics such as synchronization, thread safety, and performance optimization, making it a valuable reference for developers working on multi-threaded applications.五、Head First Design Patterns by Eric Freeman et al.Design patterns are essential tools for tacklingmon software design challenges, and Head First Design Patterns presents an engaging and accessible introduction to the topic. Written by Eric Freeman, Elisabeth Robson, Bert Bates, and Kathy Sierra, the book uses a unique and interactive approach to convey fundamental design principles and a variety of design patterns in an easy-to-understand manner. With its visually rich and structured content, Head First Design Patterns is highly rmended for Java developers who want to improve their software design skills and apply proven solutions to recurring design problems.六、Java Performance: The Definitive Guide by Scott Oaks Performance optimization is a critical aspect of software development, particularly in the context of modern, resource-intensive applications. Java Performance: The Definitive Guide, authored by Scott Oaks, is aprehensive and authoritative resource for understanding, measuring, and improving the performance of Java applications. The book covers a wide range of topics, including JVM internals, garbage collection, profiling, and tuning, and provides practical guidance and real-worldexamples for achieving optimal performance in Java-based systems.七、ConclusionIn conclusion, the Java programming language offers a rich ecosystem of reference materials, books, and documentation to support developers in their Java programming journey. Whether it's mastering the language syntax and core libraries, adopting best practices for writing high-quality code, or delving into advanced topics such as concurrency, design patterns, and performance optimization, there are numerous resources av本人lable to cater to the diverse needs and interests of Java developers. By leveraging these reference materials, developers can enhance their skills, stay updated with the latest industry trends, and build robust and efficient software solutions using Java.。
Java Abstract方法继承一、什么是Abstract方法Abstract方法是Java中一种特殊的方法,它只有声明而没有具体的实现。
在定义一个Abstract方法时,需要使用abstract关键字修饰方法,并且该方法所在的类必须是抽象类或者接口。
Abstract方法的定义如下:public abstract void methodName();二、抽象类与接口抽象类(Abstract Class)是一个不能被实例化的类,它可以包含Abstract方法和具体的方法实现。
抽象类通过使用abstract关键字进行修饰。
接口(Interface)是一种纯抽象的类,它只包含Abstract方法和常量。
接口定义方法时,默认使用public abstract修饰。
抽象类和接口的区别如下: - 抽象类可以有构造方法,而接口不能有构造方法。
- 类只能继承一个抽象类,但可以实现多个接口。
- 抽象类可以有成员变量,而接口只能有常量。
- 接口中的方法默认是public的,而抽象类中的方法可以有不同的访问修饰符。
三、Abstract方法的继承方式Abstract方法在继承关系中有以下几种继承方式:子类覆盖方法、子类重载方法、子类继续声明抽象方法。
1. 子类覆盖方法当一个子类继承自一个抽象类或者实现一个接口时,它必须实现抽象类或接口中的所有Abstract方法。
子类通过覆盖Abstract方法来提供具体的实现。
例如,有一个抽象类Animal,其中定义了一个Abstract方法eat(),如下所示:public abstract void eat();}如果一个子类Dog继承自Animal,则必须实现eat()方法:public class Dog extends Animal {@Overridepublic void eat() {System.out.println("狗吃骨头");}}2. 子类重载方法除了覆盖Abstract方法,子类还可以重载Abstract方法。
java英⽂参考⽂献java英⽂参考⽂献汇编 导语:Java是⼀门⾯向对象编程语⾔,不仅吸收了C++语⾔的各种优点,还摒弃了C++⾥难以理解的多继承、指针等概念,因此Java语⾔具有功能强⼤和简单易⽤两个特征。
下⾯⼩编为⼤家带来java英⽂参考⽂献,供各位阅读和参考。
java英⽂参考⽂献⼀: [1]Irene Córdoba-Sánchez,Juan de Lara. Ann: A domain-specific language for the effective design and validation of Java annotations[J]. Computer Languages, Systems & Structures,2016,:. [2]Marcelo M. Eler,Andre T. Endo,Vinicius H.S. Durelli. An Empirical Study to Quantify the Characteristics of Java Programs that May Influence Symbolic Execution from a Unit Testing Perspective[J]. The Journal of Systems & Software,2016,:. [3]Kebo Zhang,Hailing Xiong. A new version of code Java for 3D simulation of the CCA model[J]. Computer Physics Communications,2016,:. [4]S. Vidal,A. Bergel,J.A. Díaz-Pace,C. Marcos. Over-exposed classes in Java: An empirical study[J]. Computer Languages, Systems & Structures,2016,:. [5]Zeinab Iranmanesh,Mehran S. Fallah. Specification and Static Enforcement of Scheduler-Independent Noninterference in a Middleweight Java[J]. Computer Languages, Systems & Structures,2016,:. [6]George Gabriel Mendes Dourado,Paulo S Lopes De Souza,Rafael R. Prado,Raphael Negrisoli Batista,Simone R.S. Souza,Julio C. Estrella,Sarita M. Bruschi,Joao Lourenco. A Suite of Java Message-Passing Benchmarks to Support the Validation of Testing Models, Criteria and Tools[J]. Procedia Computer Science,2016,80:. [7]Kebo Zhang,Junsen Zuo,Yifeng Dou,Chao Li,Hailing Xiong. Version 3.0 of code Java for 3D simulation of the CCA model[J]. Computer Physics Communications,2016,:. [8]Simone Hanazumi,Ana C.~V. de Melo. A Formal Approach to Implement Java Exceptions in Cooperative Systems[J]. The Journal of Systems & Software,2016,:. [9]Lorenzo Bettini,Ferruccio Damiani. Xtraitj : Traits for the Java Platform[J]. The Journal of Systems & Software,2016,:. [10]Oscar Vega-Gisbert,Jose E. Roman,Jeffrey M. Squyres. Design and implementation of Java bindings in OpenMPI[J]. Parallel Computing,2016,:. [11]Stefan Bosse. Structural Monitoring with Distributed-Regional and Event-based NN-Decision Tree Learning Using Mobile Multi-Agent Systems and Common Java Script Platforms[J]. Procedia Technology,2016,26:. [12]Pablo Piedrahita-Quintero,Carlos Trujillo,Jorge Garcia-Sucerquia. JDiffraction : A GPGPU-accelerated JAVA library for numerical propagation of scalar wave fields[J]. Computer Physics Communications,2016,:. [13]Abdelhak Mesbah,Jean-Louis Lanet,Mohamed Mezghiche. Reverse engineering a Java Card memory management algorithm[J]. Computers & Security,2017,66:. [14]G. Bacci,M. Bazzicalupo,A. Benedetti,A. Mengoni. StreamingTrim 1.0: a Java software for dynamic trimming of 16S rRNA sequence data from metagenetic studies[J]. Mol Ecol Resour,2014,14(2):. [15]Qing‐Wei Xu,Johannes Griss,Rui Wang,Andrew R. Jones,Henning Hermjakob,Juan Antonio Vizcaíno. jmzTab: A Java interface to the mzTab data standard[J]. Proteomics,2014,14(11):. [16]Rody W. J. Kersten,Bernard E. Gastel,Olha Shkaravska,Manuel Montenegro,Marko C. J. D. Eekelen. ResAna: a resource analysis toolset for (real‐time) JAVA[J]. Concurrency Computat.: Pract. Exper.,2014,26(14):. [17]Stephan E. Korsholm,Hans S?ndergaard,Anders P. Ravn. A real‐time Java tool chain for resource constrained platforms[J]. Concurrency Computat.: Pract. Exper.,2014,26(14):. [18]M. Teresa Higuera‐Toledano,Andy Wellings. Introduction to the Special Issue on Java Technologies for Real‐Time and Embedded Systems: JTRES 2012[J]. Concurrency Computat.: Pract. Exper.,2014,26(14):. [19]Mostafa Mohammadpourfard,Mohammad Ali Doostari,Mohammad Bagher Ghaznavi Ghoushchi,Nafiseh Shakiba. Anew secure Internet voting protocol using Java Card 3 technology and Java information flow concept[J]. Security Comm. Networks,2015,8(2):. [20]Cédric Teyton,Jean‐Rémy Falleri,Marc Palyart,Xavier Blanc. A study of library migrations in Java[J]. J. Softw. Evol. and Proc.,2014,26(11):. [21]Sabela Ramos,Guillermo L. Taboada,Roberto R. Expósito,Juan Touri?o. Nonblocking collectives for scalable Java communications[J]. Concurrency Computat.: Pract. Exper.,2015,27(5):. [22]Dusan Jovanovic,Slobodan Jovanovic. An adaptive e‐learning system for Java programming course, based on Dokeos LE[J]. Comput Appl Eng Educ,2015,23(3):. [23]Yu Lin,Danny Dig. A study and toolkit of CHECK‐THEN‐ACT idioms of Java concurrent collections[J]. Softw. Test. Verif. Reliab.,2015,25(4):. [24]Jonathan Passerat?Palmbach,Claude Mazel,David R. C. Hill. TaskLocalRandom: a statistically sound substitute to pseudorandom number generation in parallel java tasks frameworks[J]. Concurrency Computat.: Pract.Exper.,2015,27(13):. [25]Da Qi,Huaizhong Zhang,Jun Fan,Simon Perkins,Addolorata Pisconti,Deborah M. Simpson,Conrad Bessant,Simon Hubbard,Andrew R. Jones. The mzqLibrary – An open source Java library supporting the HUPO‐PSI quantitative proteomics standard[J]. Proteomics,2015,15(18):. [26]Xiaoyan Zhu,E. James Whitehead,Caitlin Sadowski,Qinbao Song. An analysis of programming language statement frequency in C, C++, and Java source code[J]. Softw. Pract. Exper.,2015,45(11):. [27]Roberto R. Expósito,Guillermo L. Taboada,Sabela Ramos,Juan Touri?o,Ramón Doallo. Low‐latency Java communication devices on RDMA‐enabled networks[J]. Concurrency Computat.: Pract. Exper.,2015,27(17):. [28]V. Serbanescu,K. Azadbakht,F. Boer,C. Nagarajagowda,B. Nobakht. A design pattern for optimizations in data intensive applications using ABS and JAVA 8[J]. Concurrency Computat.: Pract. Exper.,2016,28(2):. [29]E. Tsakalos,J. Christodoulakis,L. Charalambous. The Dose Rate Calculator (DRc) for Luminescence and ESR Dating-a Java Application for Dose Rate and Age Determination[J]. Archaeometry,2016,58(2):. [30]Ronald A. Olsson,Todd Williamson. RJ: a Java package providing JR‐like concurrent programming[J]. Softw. Pract. Exper.,2016,46(5):. java英⽂参考⽂献⼆: [31]Seong‐Won Lee,Soo‐Mook Moon,Seong‐Moo Kim. Flow‐sensitive runtime estimation: an enhanced hot spot detection heuristics for embedded Java just‐in‐time compilers [J]. Softw. Pract. Exper.,2016,46(6):. [32]Davy Landman,Alexander Serebrenik,Eric Bouwers,Jurgen J. Vinju. Empirical analysis of the relationship between CC and SLOC in a large corpus of Java methods and C functions[J]. J. Softw. Evol. and Proc.,2016,28(7):. [33]Renaud Pawlak,Martin Monperrus,Nicolas Petitprez,Carlos Noguera,Lionel Seinturier. SPOON : A library for implementing analyses and transformations of Java source code[J]. Softw. Pract. Exper.,2016,46(9):. [34]Musa Ata?. Open Cezeri Library: A novel java based matrix and computer vision framework[J]. Comput Appl Eng Educ,2016,24(5):. [35]A. Omar Portillo‐Dominguez,Philip Perry,Damien Magoni,Miao Wang,John Murphy. TRINI: an adaptive load balancing strategy based on garbage collection for clustered Java systems[J]. Softw. Pract. Exper.,2016,46(12):. [36]Kim T. Briggs,Baoguo Zhou,Gerhard W. Dueck. Cold object identification in the Java virtual machine[J]. Softw. Pract. Exper.,2017,47(1):. [37]S. Jayaraman,B. Jayaraman,D. Lessa. Compact visualization of Java program execution[J]. Softw. Pract. Exper.,2017,47(2):. [38]Geoffrey Fox. Java Technologies for Real‐Time and Embedded Systems (JTRES2013)[J]. Concurrency Computat.: Pract. Exper.,2017,29(6):. [39]Tórur Biskopst? Str?m,Wolfgang Puffitsch,Martin Schoeberl. Hardware locks for a real‐time Java chip multiprocessor[J]. Concurrency Computat.: Pract. Exper.,2017,29(6):. [40]Serdar Yegulalp. JetBrains' Kotlin JVM language appeals to the Java faithful[J]. ,2016,:. [41]Ortin, Francisco,Conde, Patricia,Fernandez-Lanvin, Daniel,Izquierdo, Raul. The Runtime Performance of invokedynamic: An Evaluation with a Java Library[J]. IEEE Software,2014,31(4):. [42]Johnson, Richard A. JAVA DATABASE CONNECTIVITY USING SQLITE: A TUTORIAL[J]. Allied Academies International Conference. Academy of Information and Management Sciences. Proceedings,2014,18(1):. [43]Trent, Rod. SQL Server Gets PHP Support, Java Support on the Way[J]. SQL Server Pro,2014,:. [44]Foket, C,De Sutter, B,De Bosschere, K. Pushing Java Type Obfuscation to the Limit[J]. IEEE Transactions on Dependable and Secure Computing,2014,11(6):. [45]Parshall, Jon. Rising Sun, Falling Skies: The Disastrous Java Sea Campaign of World War II[J]. United States Naval Institute. Proceedings,2015,141(1):. [46]Brunner, Grant. Java now pollutes your Mac with adware - here's how to uninstall it[J]. ,2015,:. [47]Bell, Jonathan,Melski, Eric,Dattatreya, Mohan,Kaiser, Gail E. Vroom: Faster Build Processes for Java[J]. IEEE Software,2015,32(2):. [48]Chaikalis, T,Chatzigeorgiou, A. Forecasting Java Software Evolution Trends Employing Network Models[J]. IEEE Transactions on Software Engineering,2015,41(6):. [49]Lu, Quan,Liu, Gao,Chen, Jing. Integrating PDF interface into Java application[J]. Library Hi Tech,2014,32(3):. [50]Rashid, Fahmida Y. Oracle fixes critical flaws in Database Server, MySQL, Java[J]. ,2015,:. [51]Rashid, Fahmida Y. Library misuse exposes leading Java platforms to attack[J]. ,2015,:. [52]Rashid, Fahmida Y. Serious bug in widely used Java app library patched[J]. ,2015,:. [53]Odeghero, P,Liu, C,McBurney, PW,McMillan, C. An Eye-Tracking Study of Java Programmers and Application to Source Code Summarization[J]. IEEE Transactions on Software Engineering,2015,41(11):. [54]Greene, Tim. Oracle settles FTC dispute over Java updates[J]. Network World (Online) [55]Rashid, Fahmida Y. FTC ruling against Oracle shows why it's time to dump Java[J]. ,2015,:. [56]Whitwam, Ryan. Google plans to remove Oracle's Java APIs from Android N[J]. ,2015,:. [57]Saher Manaseer,Warif Manasir,Mohammad Alshraideh,Nabil Abu Hashish,Omar Adwan. Automatic Test Data Generation for Java Card Applications Using Genetic Algorithm[J]. Journal of Software Engineering andApplications,2015,8(12):. [58]Paul Venezia. Prepare now for the death of Flash and Java plug-ins[J]. ,2016,:. [59]PW McBurney,C McMillan. Automatic Source Code Summarization of Context for Java Methods[J]. IEEE Transactions on Software Engineering,2016,42(2):. java英⽂参考⽂献三: [61]Serdar Yegulalp,Serdar Yegulalp. Sputnik automates code review for Java projects on GitHub[J].,2016,:. [62]Fahmida Y Rashid,Fahmida Y Rashid. Oracle security includes Java, MySQL, Oracle Database fixes[J]. ,2016,:. [63]H M Chavez,W Shen,R B France,B A Mechling. An Approach to Checking Consistency between UML Class Model and Its Java Implementation[J]. IEEE Transactions on Software Engineering,2016,42(4):. [64]Serdar Yegulalp,Serdar Yegulalp. Unikernel power comes to Java, Node.js, Go, and Python apps[J]. ,2016,:. [65]Yudi Zheng,Stephen Kell,Lubomír Bulej,Haiyang Sun. Comprehensive Multiplatform Dynamic Program Analysis for Java and Android[J]. IEEE Software,2016,33(4):. [66]Fahmida Y Rashid,Fahmida Y Rashid. Oracle's monster security fixes Java, database bugs[J]. ,2016,:. [67]Damian Wolf,Damian Wolf. The top 5 Java 8 features for developers[J]. ,2016,:. [68]Jifeng Xuan,Matias Martinez,Favio DeMarco,Maxime Clément,Sebastian Lamelas Marcote,Thomas Durieux,Daniel LeBerre. Nopol: Automatic Repair of Conditional Statement Bugs in Java Programs[J]. IEEE Transactions on Software Engineering,2017,43(1):. [69]Loo Kang Wee,Hwee Tiang Ning. Vernier caliper and micrometer computer models using Easy Java Simulation and its pedagogical design features-ideas for augmenting learning with real instruments[J]. Physics Education,2014,49(5):. [70]Loo Kang Wee,Tat Leong Lee,Charles Chew,Darren Wong,Samuel Tan. Understanding resonance graphs using Easy Java Simulations (EJS) and why we use EJS[J]. Physics Education,2015,50(2):.【java英⽂参考⽂献汇编】相关⽂章:1.2.3.4.5.6.7.8.。
一、Java中的Abstract类概述在Java编程语言中,Abstract类是一种特殊的类,它不能被实例化,只能被用作其他类的父类。
Abstract类中可以包含抽象方法和非抽象方法,而且子类必须实现Abstract类中的抽象方法。
本文将针对Java 中的Abstract类以及实现Abstract类中的6个方法展开讨论。
二、创建一个Abstract类要创建一个Abstract类,需要使用关键字abstract来修饰类。
并且Abstract类通常包含抽象方法,抽象方法使用关键字abstract修饰,并且不包含方法体。
三、实现6个方法假设我们有一个名为"AbstractClass"的Abstract类,其中包含6个抽象方法。
现在我们来实现这6个方法,让具体的子类来继承AbstractClass,并且实现其中的抽象方法。
1. 实现抽象方法一我们创建一个"ConcreteClassA"的具体子类来继承AbstractClass,并且实现抽象方法一。
在具体子类中,我们需要重写并实现抽象方法一,以满足具体子类的需求。
2. 实现抽象方法二接下来,我们创建一个"ConcreteClassB"的具体子类来继承AbstractClass,并且实现抽象方法二。
同样地,我们需要在具体子类中重写并实现抽象方法二,确保满足具体子类的需求。
3. 实现抽象方法三我们创建一个"ConcreteClassC"的具体子类来继承AbstractClass,并且实现抽象方法三。
在具体子类中,我们需要重写并实现抽象方法三,以满足具体子类的需求。
4. 实现抽象方法四我们创建一个"ConcreteClassD"的具体子类来继承AbstractClass,并且实现抽象方法四。
同样地,我们需要在具体子类中重写并实现抽象方法四,确保满足具体子类的需求。
1 . Introduction To Objects1.1The progress of abstractionAll programming languages provide abstractions. It can be argued that the complexity of the problems you’re able to solve is directly related to the kind and quality of abstraction。
By “kind” I mean,“What is it that you are abstracting?” Assembly language is a small abstraction of the underlying machine. Many so—called “imperative” languages that followed (such as FORTRAN,BASIC, and C) were abstractions of assembly language。
These languages are big improvements over assembly language,but their primary abstraction still requires you to think in terms of the structure of the computer rather than the structure of the problem you are trying to solve。
The programmer must establish the association between the machine model (in the “solution space,” which is the place where you’re modeling that problem, such as a computer) and the model of the problem that is actually being solved (in the “problem space,” which is the place where the problem exists). The effort required to perform this mapping, and the fact that it is extrinsic to the programming language,produces programs that are difficult to write and expensive to maintain,and as a side effect created the entire “programming methods” industry.The alter native to modeling the machine is to model the problem you’re trying to solve。
Java抽象类详解 在中,介绍了抽象⽅法与接⼝,以及做了简单的⽐较。
这⾥我想详细探讨下抽象类。
⼀、抽象类的定义 被关键字“abstract”修饰的类,为抽象类。
(⽽且,abxtract只能修饰类和⽅法) 下⾯显⽰了⼀个最简单的空抽象类public abstract class AbstractClass {public static void main(String[] args) {AbstractClass abstractClass=new AbstractClass();}} 当对这个空的抽象类进⾏实例化时,编译器会报错: 'AbstractClass' is abstract; cannot be instantiated' 现在对这个抽象类进⾏扩展,添加属性和⽅法:public abstract class AbstractClass {public int constInt = 5;/*重载method()*/public void method() { }//没有编译错误public abstract void method(int a);public static void main(String[] args) {AbstractClass abstractClass=new AbstractClass() {@Overridepublic void method(int a) {System.out.println("实例化抽象类");}};System.out.println(abstractClass.constInt);abstractClass.method(5);}}//运⾏结果/* 5 实例化抽象类*/ 在这个抽象类中我添加了⼀个实例属性,⼀个抽象⽅法,以及该抽象⽅法的重载实例⽅法,这些都是合法的。
在main⽅法中,直接对抽象类通过new操作符进⾏实例化,出乎意料的是,IDE直接提⽰了这种操作——这⾥⽣成了⼀个(Anonymous Inner)。
介绍java英语作文The Essence of Java: A Programming Paradigm.Java, a programming language that revolutionized the software industry, has become synonymous with reliability, portability, and scalability. Its journey from itsinception in 1991 to its widespread adoption today is a testament to its versatility and adaptability. In this article, we delve into the core characteristics of Javathat have made it a preferred choice for developers across the globe.Origins and Evolution.Java was born out of a necessity to create a programming language that was both powerful and easy to use. Its creators, James Gosling, Mike Sheridan, and Patrick Naughton, were motivated by the complexities of C++ and the need for a language that could run on various platforms seamlessly. The result was Java, a language that combinedthe power of C++ with the simplicity of Smalltalk.Over the years, Java has evolved significantly. Fromits initial version, Java 1.0, released in 1996, to the latest iteration, Java 17, released in 2021, the language has undergone numerous improvements and enhancements. These include the addition of new features like lambda expressions, streams, and modularization, among others.Core Characteristics of Java.1. Platform Independence: Java's "Write Once, Run Anywhere" mantra is its most prominent feature. This is achieved through the Java Virtual Machine (JVM), which acts as an interpreter and converts Java bytecodes into machine code executable by the underlying hardware. This ensures that Java programs can run seamlessly on any platform, provided it has the JVM installed.2. Object-Oriented Programming: Java is an object-oriented programming (OOP) language, emphasizing the use of objects and classes. This paradigm simplifies complexsystems by breaking them down into manageable components. Java supports all the fundamental OOP concepts, including encapsulation, inheritance, and polymorphism.3. Robustness and Security: Java's strong typing, exception handling, and garbage collection mechanisms contribute to its robustness. By automatically managing memory allocation and deallocation, Java reduces the risk of memory leaks and other memory-related issues. Additionally, Java's security features, such as access control and encryption, make it an ideal choice for developing secure applications.4. Portability: As mentioned earlier, Java's cross-platform compatibility is one of its key strengths. The JVM ensures that Java programs can be transported easily from one platform to another without any modifications. This portability not only simplifies deployment but also扩大了Java的市场影响力。
Mobile Objects in JavaLuc Moreau Daniel Ribbens Electronics and Computer Science Service d’Informatique University of Southampton University of Li`e geSO171BJ Southampton UK4000Li`e ge,Belgium L.Moreau@ ribbens@montefiore.ulg.ac.be AbstractMobile Objects in Java provides support for object mo-bility in Java.Similarly to the RMI technique,a notionof client-side stub,called startpoint,is used to commu-nicate transparently with a server-side stub,called end-point.Objects and associated endpoints are allowed tomigrate.Our approach takes care of routing methodcalls using an algorithm that we studied in[22].Thepurpose of this paper is to present and evaluate the im-plementation of this algorithm in Java.In particular,twodifferent strategies for routing method invocations areinvestigated,namely call forwarding and referrals.Theresult of our experimentation shows that the latter canbe more efficient by up to19%.1IntroductionOver the last few years,mobile agents have emergedas a powerful paradigm to structure complex distributedapplications.Intuitively,a mobile agent can be seen as arunning software that may decide to suspend its execu-tion on a host and transfer its state to another host,whereit can resume its activity.Cardelli[5]argues that mobileagents are the right abstraction to develop applicationsdistributed across“network barriers”,e.g.in the pres-ence offirewalls or when connectivity is intermittent.InTelescript[17],software migration is presented as an al-ternative to communications over a wide-area network,in which clients move to servers to perform computa-nge[16]sees mobile agents as an evolution ofwith a stationary home agent,which acts as an inter-mediary for all communications.While this approach preserves compatibility with an existing infrastructure, introducing an indirection to a home agent for every communication puts a burden on the infrastructure;this may hamper the scalability of the approach,in particu-lar,in massively distributed systems,such as the amor-phous computer[27]or the ubiquitous/pervasive com-puting environment[1].Free from any compatibility constraint,we adopted an algorithm to route messages to mobile agents that does not require any static loca-tion:the theoretical definition of this algorithm based on forwarding pointers and the proof of its correctness have been investigated in a previous publication[22]. The purpose of this paper is to present Mobile Ob-jects in Java,an implementation of the algorithm,which offers transparent method invocation and distributed garbage collection for mobile objects.By transparent, we mean that mobile and non-mobile objects present a same interface,which is independent of the object loca-tion and its migratory status.Distributed garbage col-lection ensures that an object,whether mobile or not, can be reclaimed once it is no longer referenced.While implementing our algorithm,it became clear that two strategies could be adopted,which we named call for-warding and referrals;we present these strategies and evaluate their performance through a benchmark.This paper is organised as follows.First,we provide more motivation for mobile agents by presenting two promising application domains in Section2.Then,in Section3,we summarise the algorithm we have investi-gated in[22].In Section4,we describe its implementa-tion in Java,providing a transparent interface to mobile objects.We then discuss two different methods for rout-ing method invocations,namely forwarding and refer-rals,in Section5.In order to compare these techniques, we devise a synthetic benchmark,and analyse results in Section6.Finally,we compare our approach with re-lated work in Section7.2MotivationIn this Section,we provide further motivation for mo-bile agents.We describe two promising applications where mobile agents act semi-autonomously on behalf of users.The reasons for doing so,however,differ sub-stantially in the two applications.Digital Library Yan and Rana[30]present a high-level service for a digital library of radar images of the Earth.The library is composed of a set of confidential images and associated annotations with attached own-ership.They extend a Web-based client-server archi-tecture with mobile agents that perform tasks on behalf of users and that are able to migrate to a predefined itinerary of hosts.After being dispatched,agents migrate securely,with data,code and state to an itinerary of servers that may have relevant data and services.Agents become inde-pendent of the user who created them:they can survive intermittent or unreliable network connections.Mobile agents are beneficial for several reasons.(i)They avoid the delivery of large volume of scientific data required for data mining of images;(ii)They help maintain con-fidentiality and ownership of data,by being run through security checks,ensuring that they have the rights to ac-cess the data;(iii)They are allowed specific queries on the library according to the“security level”they were granted.Mobile Users The context of the Magnitude project [24]is the“ubiquitous computing environment”[27] where embedded devices and artifacts abound in build-ings and homes,and have the ability to sense and inter-act with devices carried by people in their vicinity.Ap-plications running on mobile devices interact with the infrastructure,andfind and exploit services to fulfill the user’sneeds.Figure1:ArchitectureHowever,communications between mobile devices and the infrastructure have some limitations,in the form of intermittent connectivity and low bandwidth.Fur-2thermore,processing power and memory capacity of compact mobile devices remain relatively small.As a result,such an environment would prevent the large scale deployment of advanced services that are commu-nication and computation intensive.We adopt mobile agents as proxies for mobiles users. As illustrated by Figure1,we utilise mobile agents,as semi-autonomous entities,which can migrate from mo-bile devices to infrastructure locations to take advan-tage of the resources their specific tasks require;mobile agents perform their tasks on the infrastructure,possibly involving further migration,and then return results back to mobile users.Summary Both scenarios use the idea of mobile agent, as a semi-autonomous proxy for a user.If granted the right to do so,mobile agents may migrate to new loca-tions,where they can take advantage of local resources. 3Message Routing AlgorithmIn this section,we summarise the message routing al-gorithm for mobile agents that we formalised in[22]. We consider a set of mobile objects and a set of sites (in our case JVM s)taking part into a computation.Each mobile object is associated with a timestamp,which is a counter incremented every time the object changes lo-cation.Each site keeps a record of the location where every mobile object known to the site is thought to be, and of the timestamp the object had at the time.There-fore,in a system composed of several sites,sites may have different information about a same mobile object (depending on how fast location information is propa-gated between sites).The algorithm proceeds as follows.When a mobile object decides to migrate from a site to another site ,it informs of its intention of migrating;a trans-portation service is used to transport the object to. When the mobile object arrives at,its safe arrival is acknowledged by informing its previous site of its new location and of its new timestamp;site can then update its local table with the mobile object’s new posi-tion and timestamp.Mobile objects delegate to sites the task of send-ing messages to other objects.When a site receives a request for sending a message to a mobile object,it searches its table in order tofind the object location.If the object is local,the message is passed onto the object.If the object is not local,but known to be at a remote lo-cation,the message is forwarded to the remote location. As migration is not atomic,a mobile object may have left a site,but the acknowledgement of its safe arrival may not have been received by the site yet.In such a case,the site temporarily has to enqueue messages aimed at the object;as soon as the acknowledgement arrives,delayed messages may be forwarded. Timestamps are used to guarantee that sites always update their knowledge about mobile objects with more recent information than the one they currently have. If a site receives information with a timestamp that is smaller than the timestamp in its table,the received in-formation is discarded.Such a timestamp mechanism is mandatory to avoid cyclic routing of messages[22].In the algorithm described so far,a mobile object leaves a trail of forwarding pointers during its migration. In order to reduce the length of the chain of forwarding pointers,routing information and associated timestamp may be propagated by any site to any site;timestamps are again used to guarantee that the most recent informa-tion is stored in routing tables.In the rest of the paper, we discuss an implementation of this abstract algorithm. 4Implementation in JavaIn Java RMI[12],an object whose methods can be in-voked from another JVM is implemented by a remote object.Such a remote object is described by one or more remote interfaces.Remote method invocation is the action of invoking a method of a remote interface on a remote object.In practice,a stub acts as a client’s lo-cal representative or proxy for a remote object.The stub of a remote object implements the same interface as the remote object:when a method is called on the stub,ar-guments are serialised and communicated to the remote object1,where the method can be called;its result is transmitted back to the stub and becomes the method call result.A very desirable feature of this approach is that local and remote method invocation share an iden-tical syntax.Now,we present an approach in which remote objects are allowed to be mobile,but clients still use the same stub-based method invocation mechanism,making them unaware of the location and movement of the mobile object.4.1Startpoints and EndpointsFigure2displays the different entities of our implemen-tation.The right-hand side of the picture represents the “server-side”on JVM,composed of a mobile object; the left-hand side is concerned with the“client-side”on JVM.We adopt Nexus terminology[8],and we respectively name startpoint and endpoint the client-side and server-side representatives of a remote object.A mobile ob-ject is specified by an interface,which must also be implemented by its startpoints.Startpoints contain an RMI stub representing the current location of a mobile object,and permit direct communication with the end-point;the endpoint passes messages to the mobile ob-ject.Additionally,the startpoint contains the mobile object’s timestamp.(The endpoint also has the same timestamp.)Figure3displays the new configuration after the mo-bile object has migrated to JVM.There exists a new endpoint acting as a server-side representative at the new location.Its timestamp is following its increase after migration.The endpoint is referred to by a start-point with timestamp,which is sent to JVM as an acknowledgement to the safe arrival at JVM.This startpoint is used by the endpoint on JVM as a forward-ing pointer to the new object location.When a method is activated on the startpoint on JVM,the call is stilltransmitted to JVM,where the endpoint is aware that the object has moved to JVM and uses the same mech-anism to forward the call.As opposed to simple message passing,a remote method invocation is expected to return a result2.In a first instance,our implementation is based on call for-warding and the result is propagated back along the chain to the initial startpoint where the method call was initiated.In such an algorithm,it is important to reduce any chain of forwarding pointers in order to reduce the cost of method invocation,but also to make the system more resilient to failures.In Figure3,when JVM has to for-ward a call to JVM,JVM knows that information on JVM is out of date.Therefore,when the result is re-turned to JVM,we can also return updated information about the mobile object location.To this end,we made the remote interface implemented by endpoints differ-EndpointintFigure2:Startpoint and Endpoint Figure3:Mobile Object Migrationprotected void migrate(String url,Serializable state) protected void install(Object state)A mobile object can initiate its migration to another JVM,identified by a RMI-style URL,using the methodmigrate.The current object content will be serialized in conjunction with an extra argument.Upon an object’s arrival,the method install is activated with the state argument passed to migrate.Both methods are de-fined as“protected”to guarantee that they are invoked only under the object’s control.The Java object model does not make any guaran-tee regarding which thread executes remote methods. Therefore,for a single object,there may be several threads executing in parallel when a request for migrat-ing is issued by one of them.As Java does not support thread migration,it is not possible to suspend the exe-cution of all threads in order to resume them at the des-tination.Instead,we allow an object to migrate when there is only one thread executing a method of this ob-ject.It is therefore the programmer’s responsibility to synchronize and terminate threads currently executing in parallel,and,if necessary,to save their state in a seri-alizablefield of the object.Mobile Objects in Java also introduce the concept of“platform”,a JVM that runs mobile objects securely.A platform is a RMI UnicastRemoteObject whichadvertises its presence by binding itself with a RMI-style URL(specified at construction time)in a RMI-registry. This is such a URL which is expected as afirst argumentby migrate.Hooks are provided to perform security checks before executing objects in their sandbox[20].4.3Startpoint DeserialisationIn our system,on a given platform,there is at most one instance of a startpoint that refers to a given mobile ob-ject.In order to preserve this invariant,each platform maintains a table of all the startpoints it knows,which is updated when startpoints are deserialised.(We use the Java method doReadResolve[13]to override the object returned from the stream.)A desirable consequence of this implementation is that all objects using a specific startpoint share the ben-efit of the most recent routing information for that start-point.The table of startpoints is a hash table,using a5unique name given to mobile objects as a hashing key. This table uses weak references[11]to guarantee that startpoints do not remain accessible longer than neces-sary.As a result,we ensure that mobile objects may be properly garbage collected.4.4Clearing Routing Information Routing information has to be cleared when it is no longer needed.Indeed,platforms run for a long period of time and host many visiting mobile objects,which leave forwarding pointers as they migrate to their next destination.We need to ensure that routing tables do not becomefilled with unnecessary routing information. We have observed[22]that the task of clearing rout-ing tables is equivalent to the distributed termination problem[25].A forwarding endpoint is allowed to be cleared if it can be proved that no other platform will ever forward method calls to it.This may be imple-mented using a distributed reference counting algorithm [23,25].In particular,RMI provides a method Unref-erenced for remote objects which is called when there is no remote reference to this object[12].When this method is called on an endpoint,it may be unexported, and the reference to the next startpoint in the chain may be lost.Note that this mechanism can only work if tables of startpoints contain weak references to these.Other-wise,if startpoints remain live,the RMI-stubs they con-tain will also remain live,which will prevent the call of the Unreferenced method on the associated end-points.5Forwarding vs ReferralsIn our theoretical algorithm[22],messages are routed individually;a reply would be regarded as a separate message to be routed independently.The view that we have adopted for Mobile Objects in Java differs slightly because it is based on the remote method invocation paradigm:methods are invoked and are expected to produce a result.In the previous section,we showed that the result could be propagated backwards along the chain of forwarding pointers left by the mobile object. Long chains of remote method invocations offer too little resilience to failures of intermediary nodes.In-stead of forwarding a method call,an endpoint could throw an exception indicating that the mobile object has migrated.The exception could contain the new start-point pointing at the mobile object location.The approach consisting of throwing an exception containing a new startpoint,instead of forwarding a call,is similar to the referral mechanism[9]used in distributed search systems such as Whois++[26]and LDAP[28].It then puts the onus on the method invoker to re-try the invocation with the next location of the ob-ject;once the object has been reached,the result may then be returned to the caller directly.In our implemen-tation,the startpoint is in charge of re-trying a method invocation until it becomes successful.Therefore,from the programmer’s viewpoint,there is no syntactic dif-ference between the two approaches.An option passed as argument to the stub compiler specifies whether code has to be generated for referrals or for call forwarding. In the rest of the paper,we compare the performance of the two approaches.6BenchmarkThe scientific programming community has a tradition of adopting benchmarks to evaluate the performance of computers;for instance,the Linpack Benchmark is a numerically intensive test used to measurefloat-ing point performance.Unfortunately,we lack bench-marks specifically suited to evaluate routing algorithms for mobile objects.This may be explained by the rel-ative novelty of the concept of mobile object,and the inexistence of widely accepted applications for mobile agents.In a previous paper[23],we observed that there was no recognised benchmark for evaluating distributed garbage collectors;therefore,we designed some syn-thetic benchmarks for such a type of distributed algo-rithms.We propose to adopt a similar approach here.A synthetic benchmark is an abstraction of a real pro-gram,where routing of messages may have an impact on the performance of the computation.In our benchmark, we measure the cost of invoking a method on a mobile object that has changed location since the last time the method was invoked on it.In the context of the Mag-nitude architecture of Section2,such a benchmark is reminiscent of the communications one may have with a mobile agent visiting several locations to perform a task.Figure4summarises the“Itinerary Benchmark”.An Itinerary consists of platforms to be visited by a mobile object.A platform,not part of the itinerary,is used to initiate invocations of a method m on the remote mobile object.Every method invoca-tion takes as argument a list of platform identifiers6Figure4:Itinerary Benchmarkthat the mobile object has successively to migrate to;anitinerary is completed when the mobile object returns to thefirst platform.As method m is invoked on the mo-bile object,it spawns a thread responsible for migratingthe mobile object to platforms,while method m termi-nates in parallel.On platform,we measure the time taken to perform all method calls necessary to complete an itinerary.Figure5illustrates the execution of the Itinerarybenchmark over10platforms(5rather heavily loaded workstations/servers each running2JVMs),connected by a local area network.Each method call forced the object to migrate to one new location.We ran the same benchmark using both the call forwarding and the refer-rals techniques.We can see that in this specific instance, referrals are on average9%faster than call forwarding, over200itineraries.We should observe the abnormal duration of thefirst itinerary in Figure5:indeed,it can be up to an order of magnitude slower than the others since it forces object byte-code to be loaded dynami-cally as the mobile object visits each platform for the first time.In Figure6,we summarise our results,which we dis-cuss now.Several variants of the Itinerary benchmark were considered.(i)We always ran the Itinerary benchmark on10 platforms.In one case,the platforms executed on5 rather heavily loaded workstations/servers each running 2JVMs)connected by a100Mb local area network(No-tation:LAN).In the other case,the platforms executed on5nodes of a cluster(Linux2.2,450Mhz)with dedi-cated100Mb network,with each node running2JVMs (Notation:Cluster).(ii)The partitioning of the platforms may be deter-ministic or non-determinisic.In the former case,the object systematically visits platforms in the same order (Notation:Sequential).In the latter case,the order of platforms is decided randomly for each itinerary(Nota-tion:Random).(iii)We ran the Itinerary benchmark using both the call forwarding(Notation:CF)and the referrals tech-niques(Notation:Ref).(iv)When a mobile object migrates to successive lo-cations,its new position can be acknowledged to all its previous locations(Notation:Eager Acknowledgement), or to its directly previous location only(Notation:One Acknowledgement).In order to reduce some of the non-deterministic na-ture of the benchmark,we have introduced a delay be-tween each method call to the mobile object,which gave 7204840968192020406080100120140160180200T i m e i n m s (l o g s c a l e )Number of itinerariesComparison of Call forwarding and Referrals [sequential (eager ack) 200 1]Call Fowarding ( Itinerary Average: 2657.99, Method Average: 265.799)Referral Style ( Itinerary Average: 2431.27, Method Average: 243.127)Figure 5:An Illustration of Call Forwarding vs Referrals (LAN)time to the object to migrate to its location.Such a delay is not included in the results.In the first table of Figure 6,eager acknowledgement of object migration resulted in methods calls to be for-warded at most once.This is confirmed by the average duration of a method call,which does not incur any sig-nificant variation as ,the number of migrations asso-ciated with a method call,increases.We also observe that there is no significant difference between sequen-tial and random itineraries.Finally,the referrals tech-nique appears to be marginally more efficient than call forwarding.In the second table of Figure 6,acknowledgements of object position is back-propagated to the object’s pre-vious location only.Therefore,as we increase ,the number of platforms that the mobile object has to mi-grate to for each method call,we observe that method calls have to be forwarded further.Again,we do not observe any significant difference between sequential and random itineraries.However,the referrals technique becomes significantly more efficient than call forward-ing:its efficiency is in the range [11%-19%]for a LAN,whereas its in the range [6%-11%]for a cluster.Instrumenting the Itinerary benchmark turned out to be more difficult than anticipated.Indeed,many ele-ments,not in our control,interact with our implementa-tion.In particular,platform to platform communications were implemented with Java RMI ,which uses Birrel’s distributed garbage collector [4].Such a distributed GCintroduces synchronisations every time a stub is com-municated by a remote method invocation;in particu-lar,such synchronisations occur in the benchmark when an object migration is acknowledged,or when stubs are piggybacked.An alternative would be to use another algorithm [23]which does not introduce such synchro-nisations.Our rationale for comparing sequential and random itineraries was to test whether a cost was in-curred because new connections needed to be opened.Java RMI hides the implementation details in a totally opaque manner,and we have no control over the man-agement of these resources in our implementation.Discussion.Call forwarding requires two interven-tions of each intermediary platform for forwarding the call and the result,whereas referrals require only one such intervention.We believe that this element is the principal explanation for the superior performance of re-ferrals in the presence of heavily loaded platforms (as in our LAN).We anticipate that such a configuration is similar to the environment in which mobile agents are likely to be deployed (cf.Section 2).At the beginning of our investigation,we debated whether referrals would be penalised by having to open new connections between the benchmark platform and itinerary platforms.In all likelihood,such connections had to be opened for distributed GC purpose in both variants of the algorithm,and therefore no significant change of performance could be attributed to this as-8Eager Acknowledgement()Method calls/Itinerary CF Ref%CF Ref%1102662439%2542435%2602456%2592465% 342622447%2572464%2572493%2602552% 522482480%2572612%LAN ClusterSequential Random Sequential RandomCF Ref%CF Ref%—Identical to Eager Acknowledgement—2529926411%2752586%33028015%29826910% 4334328916%31227911%36429519%3122888% Figure6:Average Duration of a Method Call to a Mobile Objectpect.Tools to instrument resources used within the JVM would be extremely valuable in this context.7Related Work and Conclusion We have presented Mobile Objects in Java a library able to route method invocations to mobile objects.We have discussed two ways of forwarding calls,namely call for-warding and referrals;the latter turned out to be more ef-ficient in our benchmark.There is a third method where the caller explicitly passes a reference to itself,which is used by the callee to return the result.Such a method discussed in[21,8]allows the result to“short-cut”the chain of forwarding calls.A more extensive study is required to investigate the performance of these three methods(as well as the home agent approach)in vari-ous scenarios.Mobile Objects in Java is an integral part of a mo-bile agent system that we use to support mobile users in the Magnitude project[24].From a software engineer-ing viewpoint,such a library provides a separation of concern between higher-level interactions and message routing.We are adopting such a communication model in three different circumstances.(i)User-driven com-munication to their mobile agents;(ii)Return of results from a mobile agent to a mobile personal digital assis-tant;(iii)Communications between mobile agents.There are a number of other systems that support mo-bile computations,but they adopt a different philosophy. Emerald[15]supports migration of an object,including threads running in parallel.In Kali Scheme[6],contin-uations may be migrated between address spaces.None of them provides the transparent routing of messages,as described in this paper.Other approaches rely on a sta-tionary entity to support communications between mo-bile objects,including Aglets[16],Nomadic Pict[29], April[18]and the InterAgent Communication Library [19].Jumping Beans[2]is a commercial product offer-ing support for mobile applications,but requires a server to be visited by mobile agents during each agent migra-tion.Stationary and central locations put an extra bur-den on the infrastructure which we wanted to avoid in our implementation.Our investigation has highlighted a number of diffi-culties concerning the evaluation of algorithms for mo-bile agents.(i)In high-level implementations such as ours,in particular above Java RMI,the lack of tools to instrument low-level resources(connections,distributed garbage collection)makes it somewhat difficult to ex-plain observed behaviours.(ii)The absence of widely recognised benchmarks does not ease comparison with other authors.(iii)In mobile computing,social hu-man behaviours dictate the patterns of physical mobil-ity;these can be extensively used in simulations.Be-9。