加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

什么样的事情可以用Java而不是Python?

发布时间:2020-12-14 05:31:58 所属栏目:Java 来源:网络整理
导读:我会选择一种新的编程语言 – Java,一直在使用 Python一段时间.但是似乎大多数可以用Java完成的事情可以用Python完成.所以我想知道 Java可以做什么样的事情而不是Python? 移动编程(Android). POSIX线程编程. 相反,Python可以做什么事情,但不是Java? 澄清:
我会选择一种新的编程语言 – Java,一直在使用 Python一段时间.但是似乎大多数可以用Java完成的事情可以用Python完成.所以我想知道

> Java可以做什么样的事情而不是Python?

>移动编程(Android).
> POSIX线程编程.

>相反,Python可以做什么事情,但不是Java?

澄清:
我希望从实际的角度来看待答案,但不是一个理论观点,而应该是关于现状,而不是未来.所以在理论上所有的编程语言都可以执行任何任务,实际上每个都有某种限制.

解决方法

我猜使用Jython,你可以用Python做任何你可以在Java中做的事情.

相反,Python具有PyPy编译器,这是非常酷的 – 具有多个备份的虚拟机(Java Runtime,LLVM,.net和Python IIRC),多个垃圾收集器,多个实现(Stackless)等.我知道Java具有虚拟机的大选择,但PyPy的增长是惊人的,因为它是用RPython编写的 – 这是一个相当有成效的语言.

此外,Java可以做到这一点,在1个文件中,少于20行,没有库导入?显然,这两种语言都有图书馆可以做到这一点,但我只是在谈论语言的灵活性.

class Logger(object): # boilerplate code
    def log(self,level,msg,*args,**kwargs): # *args,**kwargs = flexible arguments
        self._log(level,**kwargs) # call with flexible argments

    def _log(self,**kwargs):
        # override me at runtime :) 
        # I think Java people call this Dependency Runtime Injection
        if level>1:
            print msg,args,kwargs

logger = Logger() # boilerplate code

def logged(level): # what pattern do you call this?
    def logged_decorator(function): # and this? 
        def func(*args,**kwars): 
            name = func.__name__ # look ma,reflective metaprogramming!
            logger.log(level,name,**kwargs)
            return func(*args,**kwargs)
        return func # boilerplate code
    return logged_decorator # boilerplate code

使用示例

@logged
def my_func(arg1,arg2):
   # your code here
   pass

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读