V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fourstring
V2EX  ›  Android

目前出于兴趣学习 Android 开发是否还需要学习 Java ?还是直接学习 Dart 及 Flutter?

  •  
  •   fourstring · 2019-05-06 20:04:49 +08:00 · 11159 次点击
    这是一个创建于 2019 天前的主题,其中的信息可能已经有所发展或是发生改变。

    楼主是大一学生,本身在编程以及计算机科学方面有一定的基础,比较熟悉 Python 和 Web 开发;编译型语言方面对 C++尚有一定了解不过不如 Python 熟练。目前出于兴趣原因,想学习开发 Android 应用,有几个问题想请教一下各位大佬们:

    1. 目前学习 Android 开发还需要学习 Java (以及传统的 Android 应用开发方式)吗?
    2. Dart/Flutter 是否足以开发系统级的 Android 应用(如冰箱 存储重定向等),还是说必须涉及 Java ?
    3. 如果不研究 Android 开发,是否有额外学习 Java 的必要?

    (问题 2 算是对问题 1 的补充。我有了解过 Flutter,如果我的理解没错的话它在布局方面确实能带来很大的提升,但在与 Android 系统交互方面似乎并没有提供什么帮助。鉴于 Android 之前的主要开发语言还是 Java,如果我希望能开发系统级的 Android 应用,是不是一定要学习 Java ?)

    感谢指点!

    19 条回复    2019-05-08 14:31:05 +08:00
    wly19960911
        1
    wly19960911  
       2019-05-06 20:13:53 +08:00   ❤️ 1
    跨平台避不开原生开发,跨平台很多时候系统差异,调用的 api 和操作都不一样,在跨平台的语言里面是没法直接处理的。文件处理,各种系统数据获取、通知,原生的 api 这怎么都得知道,但是至少你在画 UI 上功夫可以减不少,但是仍旧有坑。

    这个就直接回答了 1,2 两个问题了。而且基于 dart 的单线程有坑,执行耗时操作的时候卡 UI (比如压缩图片),实际上很多时候还是调用了原生的,只是做了通信而已。

    第三个问题,可以学习,至少目前企业开发后端和各种面向对象知识可以学习下,多看多接触,对自己以后发展很有帮助。
    liuhuansir
        2
    liuhuansir  
       2019-05-06 20:14:26 +08:00   ❤️ 1
    完全没必要学 Android 开发,你才大一,基础更重要,可以继续深耕 Python 和 Web 开发,有时间可以学学 Java,说不定你等毕业 Dart/Flutter 已经黄了
    BlockHeader
        3
    BlockHeader  
       2019-05-06 20:17:19 +08:00   ❤️ 1
    我从 Android 2.0 Eclair 开始看 Android 的源代码,我写过 Android 原生 App,也用过 React Native 写过 App。以下是我的答案:
    1. 目前学习 Android 开发还需要学习 Java (以及传统的 Android 应用开发方式)吗?
    最好是学习一下传统的 Android 应用开发(最起码要了解)。因为你毕竟是在 Android 系统上,需要理解 Android App 的生命周期,各种术语:Activity,Service,Provider,Intent 等等。
    2. Dart/Flutter 是否足以开发系统级的 Android 应用(如冰箱 存储重定向等),还是说必须涉及 Java ?
    Flutter/Dart 我没有用过。我用过 React Native。React Native 是用 jsx,实现一套代码,通过 React Native 编译成两个平台的原生 App。在实现一些和系统强相关的功能的时候,可能需要自己实现 jsx 到 Android 的组件模块。实现 Android 模块,积极需要使用 Java 或者 Kotlin。
    3. 如果不研究 Android 开发,是否有额外学习 Java 的必要?
    除了开发 Android 应用程序,还有其他开发是可能用到 java 的。有时间,还是学学为好。当然,最好和你正在做的事情或者想要做的事情结合起来,带着问题学习,效率可能高些。
    zagfai
        4
    zagfai  
       2019-05-06 20:44:29 +08:00
    @liuhuansir Dart 不是一两年的事情了,在还没有 flutter 的时候我就看好 dart。还是看有没有资源投入吧。
    murmur
        5
    murmur  
       2019-05-06 20:45:42 +08:00
    @zagfai 当年看 chromebook 和 chromeos 的人也是这么说的
    HuasLeung
        6
    HuasLeung  
       2019-05-06 20:47:25 +08:00 via Android
    java 能造航母
    hhecoder
        7
    hhecoder  
       2019-05-06 20:54:11 +08:00
    1. 假设你想找安卓开发工作,学 Java 开发安卓吧。

    2. 假设你想快速开发一个安卓 APP,学 Java 开发安卓吧。

    3. 假设你想跨平台,学 react native 吧

    4. 其他,学 Java 开发安卓吧。
    laogui
        8
    laogui  
       2019-05-06 20:54:39 +08:00 via Android   ❤️ 1
    目前 Flutter 只适合画界面,想深入学习系统级别的东西还得学原生。
    nicevar
        9
    nicevar  
       2019-05-06 21:00:52 +08:00
    学好 Java 就够了,什么跨平台新语言都是一些胡里花哨的东西,学好了一门语言其他语言基本上不在话下。
    如果你只会 Flutter/Dart 是做不了 Android 开发的,当然写个按钮弹个 hello world 没啥问题
    Raisu
        10
    Raisu  
       2019-05-06 21:42:55 +08:00
    不要学后面那两个,要用看看文档就好了,大一应该打好基础啊,国外的教材公开课看一看
    jerrry
        11
    jerrry  
       2019-05-06 21:46:13 +08:00 via Android
    @murmur chromeos 不是很火吗
    glumess
        12
    glumess  
       2019-05-07 08:52:19 +08:00   ❤️ 1
    可以学学多媒体相关的,音视频的内容会比较持久一点,可以看看我的博客 glumes.com 也是在做这方面的内容
    liang7878
        13
    liang7878  
       2019-05-07 10:23:19 +08:00
    出于兴趣学习的话只要学学 flutter 就行了,学习门槛低,能够快速出成果,有助于保持你的学习热情,后续如果做的东西涉及到底层或者原生系统的内容再系统性的学习,大一能够做出成果对保持学习热情非常重要。另外做这些的时候一定不要放下对基础课程(组成原理,网络,编译原理,数据库,etc.)的学习,不要因为做了一两个 app 就沾沾自喜,这样就差不多了,原生这块儿晚点再学没事。
    Lin0936
        14
    Lin0936  
       2019-05-07 11:17:21 +08:00
    既然是兴趣当然是都学学看了。
    motecshine
        15
    motecshine  
       2019-05-07 12:59:02 +08:00
    基础不扎实走不远, 语言只是工具. 深耕一个领域才是最好的.
    scar263
        16
    scar263  
       2019-05-07 15:35:37 +08:00
    Flutter 值得学习和使用。
    zagfai
        17
    zagfai  
       2019-05-07 23:21:31 +08:00
    @murmur 还是得看资源投入吧,chromebook 其实已经满足我需求了,外形好看点,足够轻 67 百 gram 的样子,我会买。
    lizhuoli
        18
    lizhuoli  
       2019-05-08 02:01:29 +08:00 via iPhone
    兴趣用 Flutter,找工作看 Java
    不过鉴于你说是大一,而且大概率不会本科工作,建议学好数学转 ML 岗位
    whp1473
        19
    whp1473  
       2019-05-08 14:31:05 +08:00
    建议学好一门语言,Java 或 C++,其他选学工具型语言 shel、python,前端 js、echart、vue、flutter。
    非常建议学好数据结构和算法、计算机组成原理、通信协议 TCP/IP、编译原理(选学)、离散数学、概率论、高等数学。
    其他花里胡哨的都是壳子。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1614 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:04 · PVG 01:04 · LAX 09:04 · JFK 12:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.