Java与Objective-C的渊源 objective-c和c++的区别

   2023-02-09 学习力0
核心提示:java创始成员Patrick Naughton回忆,通常人们会认为Java是学Modula-3和C+,其实这些都是谣传,而对Java影响比较大的则是Objective-C:单 继承、动态绑定和加载、类对象、纯虚函数、反射、原始类型包装类等。Java的接口直接抄自OC的协议。  Objective-C是扩

java创始成员Patrick Naughton回忆,通常人们会认为Java是学Modula-3和C+,其实这些都是谣传,而对Java影响比较大的则是Objective-C:单 继承、动态绑定和加载、类对象、纯虚函数、反射、原始类型包装类等。Java的接口直接抄自OC的协议。

  Objective-C是扩充C的面向对象编程语言。它主要使用于NeXTSTEP和Mac OS X系统上,也可以在gcc运作的系统写和编译。通常人们会认为Java是学Modula-3和C++,甚至还有人说Java是模仿 NewtonScript,这些都是胡说八道和谣传。

  Java语法可能与C++类似,但作为语言来讲,其与C++并无相似性。Java的核心语法是动态绑定以及主要使用单继承、类对象以及可扩展的运行时系统。而C++和Modula-3则远离这种任何面向对象语言都所具备的特性。而最值得注意的是,NeXT上的Objective-C与Java几乎有着惊人的相似性:单继承、动态绑定和加载、类对象、接口、反射、原始类型包装类等

其实这并不算奇怪,Patrick Naughton准备离开Sun加入到NeXT时,他在曲棍球队联赛上遇到了Scott McNealy(Sun公司董事会主席及联合创始人)。Scott告诉他不该离开Sun。

所以Patrick并没有离开,并且成为最原始的Oak团队成员之一,他在团队中的亲和力使NeXTSTEP能够出现在Java中,使Java看起来与Objective-C有极其相像的外观(NeXTSTEP上的主要开发语言)。


以上是Sean Luke和Tom Gall邮件里的内容,下面是Patrick看完邮件后写的内容:

  当时我们有许多朋友在NeXT工作。Bruce Martin负责NeXTSTEP的486端口、Peter King、Mike Demoney和John Seamons则致力于开发神奇的(从未发行)NRW(NeXT RISC Workstation,88110???)。后来,他们也加入到我们的队伍中,并且一起编写了第一版的Oak。我十分肯定,Java的接口 (interface)是直接抄至Objective-C的协议,该协议大部分都是由NeXT成员设计的。那些奇怪的原始包装类例如Integer和 Number等都来自Lee Boynton之手,其中较早的搞NeXT Objective-C类库的家伙讨厌int和float类型。

  另外一件非常有趣的事情是,John Seamons(刚好是Andy Bechtolsheim在斯坦福大学的室友,主要负责Unix to SUN-0的首端口)曾做过一个Oak(Java)给Newton。我们当时正在试图与3DO做一笔交易,作为他们的OS/API,但我们手头上没有任何 3DO开发系统,所以John拆开一个Apple Newton 100,并连接到一个逻辑分析仪上,逆向其工程接口,并且拿原始的Star 7演示放在这台机器上运行。3DO交易结束后,大部分大码就丢失在历史长河中了……

事实证明,Tom和Sean说的是非常正确的。当我准备离开Sun加入到NeXT时,我认为Objective-C是最酷的东西,并且我非常讨厌 C++。于是,自然而然的,当我最终留下来启动Java项目时,Objective-C对我的影响很大,James Gosling比我大点,他拥有大量的SmallTalk和Simula68经验,因此我们也轻松地从中获得了一些。

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 《黑马程序员》 category分类的使用(Objective
    分类的作用:在不改变原来类的基础上,可以给类增加一些方法。使用注意 : ①  分类只能增加方法,不可以增加成员变量                ②  分类的方法在实现中可以访问成员变量,不过成员变量必须手动实现。               
    03-16
  • Objective-C学习—UIScrollView控件使用
    Objective-C学习—UIScrollView控件使用
    一、知识点简单介绍1.UIScrollView控件是什么?(1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限(2)当展⽰示的内容较多,超出⼀一个屏幕时,⽤用户可通过滚动⼿手势来查看屏幕以外的内容(3)普通的UIView不具备滚动功能
    03-16
  • Objective-C Runtime(转)
    博主地址: http://yulingtianxia.com/blog/2014/11/05/objective-c-runtime/曾经觉得Objc特别方便上手,面对着 Cocoa 中大量 API,只知道简单的查文档和调用。还记得初学 Objective-C 时把[receiver message]当成简单的方法调用,而无视了“发送消息”这句话
    03-08
  • iOS扩展——Objective-C开发编程规范 简单io扩展实验代码
    iOS扩展——Objective-C开发编程规范 简单io扩
      最近准备开始系统学习一个完整项目的开发流程和思路,在此之前,我们需要对iOS的开发变成规范进行更系统和详尽的学习,随意对编程规范进行了整理和学习。本文内容主要转载自:Objective-C-Coding-Guidelines-In-Chinese  此外,这篇文章所说的一些常见
    03-08
  • Objective-C利用协议实现回调函数
    实现一个显示文字为测试的视图,然后经过3秒钟测试文字变为回调函数文字。相应的截图如下:  实现的代码如下:定义协议:#import UIKit/UIKit.h @protocol NoteDelegate //回调函数 -(void)messageCallBack:(NSString *)string; @end 调用协议:#impor
    02-10
  • 刨根问底Objective-C Runtime(1)- Self & S
      刨根问底Objective-C Runtime(1)- SelfSuper - Chun Tips专注iOS开发 刨根问底Objective-C Runtime(1)- SelfSuper前言关于Objective-C Runtime一篇好的文档 : Understanding the Objective-C Runtime译文地址为: http://blog.cocoabit.com/blog/2
    02-10
  • Objective-C利用协议实现回调函数
    实现一个显示文字为测试的视图,然后经过3秒钟测试文字变为回调函数文字。相应的截图如下: 实现的代码如下:定义协议:#import UIKit/UIKit.h @protocol NoteDelegate//回调函数-(void)messageCallBack:(NSString *)string;@end  调用协议:#import Founda
    02-10
  • Objective-c开发中混合使用ARC
    首选“Compile Sources”的位置:选中工程-TARGETS-相应的target然后选中右侧的“Build Phases”,向下就找到“Compile Sources”了。如何在未使用arc的工程中引入一个使用了arc特性的文件:对相应的文件添加:-fobjc-arc参数如何在arc工程中引用未使用arc的文件
    02-10
  • Objective C运行时(runtime)技术总结,好强大
    前言:         Objective C的runtime技术功能非常强大,能够在运行时获取并修改类的各种信息,包括获取方法列表、属性列表、变量列表,修改方法、属性,增加方法,属性等等,本文对相关的几个要点做了一个小结。目录:(1)使用class_replaceMethod/cla
    02-09
  • Programming With Objective-C---- Introductio
    a:link { color: rgba(88, 114, 210, 1); text-decoration: none }a:visited { color: rgba(88, 114, 210, 1); text-decoration: none }a:hover { color: rgba(173, 189, 248, 1); text-decoration: none }a:active { color: rgba(0, 0, 255, 1); text-decora
    02-09
点击排行