Identifying Reference Objects by Hierarchical Clustering in Java Environment
最近Java编程环境变得非常流行。Java程序设计语言是一种被设计为足够可移植的语言,可以在从手机到超级计算机的各种计算机中执行。用Java编写的计算机程序被编译成适于由Java虚拟机实现执行的Java字节代码指令。Java虚拟机通常通过Java虚拟机指令集的解释器在软件中实现。作为一种面向对象的语言,Java使用了对象的概念。我们的思想是在Java环境中,通过层次聚类分析,使用引用栈和执行栈来识别候选对象的引用。
2011-10-15 cs.SE
Towards a Dataset of Programming Contest Plagiarism in Java
在本文中,我们描述并提出了第一个专门针对竞赛剽窃的源代码剽窃数据集。该数据集包含251对Java竞争性编程任务的剽窃解决方案,以及660个非剽窃解决方案,然而,所描述的方法可以用于将来扩展数据集。重要的是,每一对都有两个版本:(a)“原始”和(b)删除了参与者的重复模板代码,允许在不同的设置中评估工具。我们使用收集的数据集来比较可用的源代码剽窃检测工具,包括最先进的工具,特别是在检测竞赛剽窃的能力方面。我们的研究结果表明,由于模板代码和其他误导性相似代码的存在,这些工具在比赛抄袭方面表现出显着更差的性能。在测试的工具中,基于令牌的工具在数据集的两种变体中表现出最佳性能。
2023-03-19 cs.SE
CoderUJB: An Executable and Unified Java Benchmark for Practical Programming Scenarios
本文提出包含 2,239 道题、源自 17 个真实开源 Java 项目的可执行统一基准 CoderUJB,用于评估 LLMs 的实际编程能力,并发现持续预训练和指令微调可能损害某些任务性能。
2024-03-28 cs.SE
Simulating Students' Java Programming Errors with Large Language Models
University of California, Los Angeles(加州大学洛杉矶分校)
探索用LLM模拟学生编程错误,评估五种模型在多样性和对齐性上的表现,发现Claude Sonnet 4平衡最佳,且合成错误与真实错误难以区分。
2026-06-15 cs.CL cs.SE
Obfuscating Java Programs by Translating Selected Portions of Bytecode to Native Libraries
代码混淆是一种流行的方法,可以使程序理解和分析变得更加困难,其目的是减轻与恶意逆向工程和代码篡改相关的威胁。然而,编译成高级字节码的程序设计语言(例如,Java)只能在有限的程度上进行模糊处理。事实上,高级字节码仍然包含攻击者可能利用的高级相关信息。为了实现更有弹性的混淆,这些程序的一部分可以用程序设计语言来实现(例如,C)编译为低级机器相关代码。事实上,机器码包含和泄漏更少的高级信息,并且它能够实现更有弹性的混淆。在本文中,我们提出了一种方法来自动翻译的关键部分的高级Java字节码到C代码,以便更有效的混淆可以诉诸。此外,开发人员仍然可以使用单个程序设计语言工作,即,Java.
2019-01-15 cs.SE
Automatically Generating Documentation for Lambda Expressions in Java
当lambda表达式作为Java 8的一部分在2014年引入Java程序设计语言时,它们是该语言进入函数式编程的第一步。由于lambda表达式仍然相对较新,并非所有开发人员都使用或理解它们。在本文中,我们首先介绍了一项实证研究的结果,以确定GitHub存储库的开发人员使用lambda表达式的频率以及它们是如何记录的。我们发现11%的Java GitHub存储库使用lambda表达式,只有6%的lambda表达式带有源代码注释。然后,我们提出了一个名为LambdaDoc的工具,它可以自动检测Java存储库中的lambda表达式,并为它们生成自然语言文档。我们与23名专业开发人员一起对LambdaDoc进行的评估表明,他们认为生成的文档是完整的,简洁的,并且具有表达力,而我们的参与者在没有工具支持的情况下生成的大多数文档都是不够的。我们的贡献建立了一个重要的一步,自动生成文档的功能性编程结构的面向对象的语言。
2019-03-15 cs.SE
Narrow Transformer: StarCoder-Based Java-LM For Desktop
Infosys Limited(印孚瑟斯有限公司);University of Allahabad(阿拉哈巴德大学)
本文提出基于 StarCoderBase-1.1B 的开源 Java 专用代码模型 NT-Java-1.1B 及其量化版本,在 MultiPL-E 上达到可比的先进性能并适合桌面部署。
2024-09-07 cs.AI cs.CL cs.SE
Concurrent Approach to Flynn's SPMD Classification through Java
并行编程模型作为硬件和存储器架构的抽象而存在。目前常用的并行程序设计模型有共享内存模型、线程模型、消息传递模型、数据并行模型、混合模型、Flynn模型、并行计算模型、流水线计算模型等。这些模型并不特定于特定类型的机器或内存架构。本文重点研究了在单处理环境下用Java语言实现Flynn SPMD分类的并行方法。
2010-03-07 cs.SE
Towards Hybrid Intensional Programming with JLucid, Objective Lucid, and General Imperative Compiler Framework in the GIPSY
纯Lucid程序是并发的,粒度非常细。顺序线程(ST)是为了扩大粒度而引入的函数;它们通过通用内涵编程系统(GIPSY)中的通信过程(CP)从服务器传递到工作器。JLucid程序将用于ST的Java代码与用于并行控制的Lucid代码相结合。因此,首先,在这篇论文中,我们描述了新的JLucid编译器生成ST和CP的方式。JLucid还引入了数组支持。进一步的探索经历了Lucid语言家族所经历的额外的转换,以支持在通用内涵程序设计语言(GIPL)和索引Lucid中使用Java对象及其成员:首先,以JLucid的形式允许使用伪对象,然后通过专门设计的Objective Lucid语言。通过讨论和实例,给出了ObjectiveLucid的语法和语义定义以及Java对象在内涵程序中的含义。最后,有许多有用的科学和实用程序是用Java以外的命令式程序设计语言编写的,例如C、C++、Fortran、Perl等。因此,提供一个框架来促进将这些语言包含到GIPSY中并由Lucid程序使用是明智的。为解决这一问题,提出了一个总的强制性框架及其具体实施。
2009-12-21 cs.PL cs.SE
User-driven Design and Evaluation of Liquid Types in Java
在开发生命周期中较早检测到的错误更容易修复,而且修复成本更低,而在生产过程中发现的错误很难解决,而且解决成本很高,可能会产生可怕的后果。类型系统在开发生命周期的早期识别和防止错误方面特别有效,因为它会导致无效程序导致构建失败。Liquid类型比主流程序设计语言中的类型更强大,允许检测更多类别的错误。然而,虽然Liquid Types在2008年被提出并集成到ML中,随后通过语言扩展引入C(2012),JavaScript(2012)和Haskell(2014),但它们尚未被主流开发人员广泛采用。本文研究了如何将Liquid类型集成到主流程序设计语言Java中,提出了一种新的设计,旨在降低进入门槛,并适应Java开发人员在运行时经常遇到的问题。为了提高可访问性,我们进行了一系列开发人员调查,以设计我们的原型LiquidJava的语法。为了评估原型的可用性,我们对30名Java开发人员进行了用户研究,得出的结论是用户打算使用LiquidJava,并且它有助于发现更多错误并更快地调试。
2021-10-11 cs.PL cs.SE
Why did developers migrate Android applications from Java to Kotlin?
目前,大多数在移动设备上运行的应用程序都是用Java开发的Android应用程序。然而,开发人员现在可以使用一种新的程序设计语言编写Android应用程序:Kotlin,谷歌在2017年将其作为开发Android应用程序的官方程序设计语言。从那时起,Android开发人员已经能够:a)使用Kotlin从头开始编写Android应用程序,b)通过添加Kotlin代码(可能归功于两种语言之间的互操作性)来改进现有的Java Android应用程序,或者c)将其Android应用程序从Java迁移到Kotlin。本文旨在研究这最后一种情况。我们进行了一项定性研究,以了解Android开发人员将Java代码迁移到Kotlin的原因,并将他们在此过程中的经验汇总在一起,以确定他们面临的主要困难。为了执行这项研究,我们首先确定了来自开源Android项目的提交,这些项目已经将Java代码迁移到Kotlin。然后,我们给编写这些迁移的开发人员发了电子邮件。因此,我们从98名将代码从Java迁移到Kotlin的开发人员那里获得了信息。本文介绍了研究确定的进行迁移的主要原因。我们发现开发人员将Java代码迁移到Kotlin是为了访问程序设计语言功能(例如,扩展函数,扩展函数,智能转换),这些功能在Java for Android开发中不可用,并获得更安全的代码(即,避免空指针异常)。我们还确定了研究…
2021-11-22 cs.SE
Acknowledging Good Java Code with Code Perfumes
针对现有Java编程自动化反馈偏负面的问题,提出类似代码检查的code perfumes技术,通过20种面向初中级学习者的代码特征表彰良好实践,实验证实其与代码质量、学生成绩正相关,可辅助教学反馈。
2024-06-24 cs.SE
On the Generalizability of Deep Learning-based Code Completion Across Programming Language Versions
本文评估了CodeT5模型在仅用Java 8训练后对九个Java版本的泛化能力,发现版本差异显著影响性能,并提出版本特定微调可部分缓解此问题。
2024-03-22 cs.SE
Exploring the Generality of a Java-based Loop Action Model for the Quorum Programming Language
许多算法步骤需要一个以上的语句来实现,但不足以成为一个方法(例如,添加元素、找到最大值、确定值等)。这些步骤通常通过循环来实现。循环的内部注释通常描述这些中间步骤,然而,不幸的是,只有很少一部分代码被很好地记录下来,以帮助新用户/程序员。因此,当前的源代码分析无法利用单个语句和整个方法之间的抽象级别上的信息,因为这些信息不容易在描述代码块的任何内部注释之外获得。因此,这个项目探讨了一种自动确定循环结构的高级操作的方法的通用性。该方法是在Quorum语言源代码的存储库中挖掘给定循环结构的循环特征,将其映射到(已经为Java开发的)动作识别模型,从而识别指定循环执行的动作。结果是有希望的,足以得出结论,这种方法可以适用于其他程序设计语言了。
2019-03-31 cs.SE
A Formal Model of the Safety-Critical Java Level 2 Paradigm
安全关键Java(SCJ)为必须经过认证的应用程序引入了一种新的编程范式。SCJ规范(JSR 302)是一个开放组标准,但它不包括验证技术。以前的工作已经解决了SCJ Level~1程序的验证问题。我们支持更复杂的SCJ Level~2程序,它允许使用Java线程、等待和通知机制编写高并发多处理器应用程序。我们提出了一个正式的模型SCJ水平~2,捕获的状态和行为的SCJ程序和SCJ API。这是SCJ Level~2范式的第一个形式化语义,也是SCJ Level~2程序基于精化推理技术发展的一个重要组成部分。我们展示了如何我们的模型可以用来证明SCJ API和应用程序的属性。
2018-05-27 cs.SE
Comparative analysis of large data processing in Apache Spark using Java, Python and Scala
本研究基于Apache Spark与Apache Iceberg,对比Java、Python、Scala处理不同规模及复杂度数据的ETL性能,发现小数据量下Python更快,大数据量及复杂操作中Scala、Java更高效,可为数据处理流程优化提供参考。
2025-10-21 cs.DB cs.DC cs.PL
Data-Driven Evidence-Based Syntactic Sugar Design
针对编程语言语法糖设计依赖经验直觉的问题,本文提出将频繁子图挖掘应用于超1.6亿个Java方法的数据集,通过泛化控制流图挖掘代码模式,识别潜在新语法糖,为数据驱动的语言演进提供概念验证。
2024-02-02 cs.SE
Automated Debugging In Java Using OCL And JDI
正确性约束为面向对象系统中的自动调试提供了基础。本文讨论了一种将正确性约束纳入Java开发环境的新方法。我们的方法使用对象约束语言(“OCL”)作为规约语言和Java接口(“JDI”)作为验证API。OCL提供了一种用于表达面向对象的约束的标准语言,其可以与统一建模语言(“UML”)软件模型集成。JDI提供了一个标准的Java API,能够支持类型安全和无副作用的运行时约束评估。所得到的正确性约束机制:(1)不需要程序设计语言修改;(2)既不需要访问也不需要改变现有的源代码;以及(3)与标准的现成Java虚拟机(“VM”)一起工作。一个原型的正确性约束审计员,以证明该机制的自动调试的目的的效用。
2001-01-03 cs.PL cs.SE
ARJA: Automated Repair of Java Programs via Multi-Objective Genetic Programming
最近的实证研究表明,GenProg的性能并不令人满意,特别是对于Java。在本文中,我们提出了ARJA,一个新的GP为基础的修复方法自动修复的Java程序。具体来说,我们提出了一种新的低粒度补丁表示,适当的搜索子空间的可能错误的位置,操作类型和潜在的修复成分,使GP探索搜索空间更有效。基于这种新的表示,我们制定自动程序修复作为一个多目标的搜索问题,并使用NSGA-II寻找更简单的修复。为了减少计算量和搜索空间,我们引入了一个测试过滤过程,可以加快适应度评估的GP和三种类型的规则,可以应用到避免不必要的操作的代码。此外,我们还提出了一种类型匹配策略,可以通过利用现有语句的语法模式来创建新的潜在修复成分。我们进行了一个大规模的实证评估ARJA及其变种的种子错误和现实世界的错误相比,几个国家的最先进的修复方法。我们的研究结果验证了ARJA中所采用的搜索机制的有效性和效率,也显示了其优于其他方法。特别是,与jGenProg(GenProg for Java的实现)相比,完全遵循冗余假设的ARJA版本可以为两倍以上的bug数量(从27到59)生成测试套件足够的补丁,并为近四倍的数量(从5到18)生成正确的补丁,在Defects 4J中考虑了224个真实世界的bug。此外,ARJA是能够正确地修复几个真正的多位置的错误,很难被修复的大多数现有的修复方法。
2017-12-21 cs.SE
JavaBench: A Benchmark of Object-Oriented Code Generation for Evaluating Large Language Models
The Hong Kong University of Science and Technology(香港科技大学);Guangzhou HKUST Fok Ying Tung Research Institute(广州香港科技大学霍英东研究院);Nanjing University(南京大学)
提出项目级Java基准JavaBench,包含4个项目、106个类和389个方法,评估LLM面向对象代码生成能力,发现LLM在项目级Java编程上远落后于本科生。
2024-10-11 cs.AI cs.LG cs.PL
Outside the Sandbox: A Study of Input/Output Methods in Java
本文通过静态和动态分析Java项目中I/O方法的使用情况,发现大量方法涉及I/O,强调工具设计需集成I/O元数据。
2023-06-20 cs.PL cs.SE
Adoption and Evolution of Code Style and Best Programming Practices in Open-Source Projects
University of Auckland(奥克兰大学)
本文研究了开源项目中代码风格和最佳实践的采用与演变,发现常见违规情况并提出改进方向。
2026-01-14 cs.SE
Modeling Programs Hierarchically with Stack-Augmented LSTM
程序设计语言建模近年来引起了人们的广泛关注,它在程序处理领域起着至关重要的作用。最初为自然语言设计的统计语言模型已被普遍用于建模程序设计语言。然而,与自然语言不同,程序设计语言具有显式的层次结构,传统的统计语言模型很难对其进行学习。为了应对这一挑战,我们提出了一种新的用于程序设计语言建模的Stack-Augmented LSTM神经网络。在LSTM网络中添加堆栈内存组件使我们的模型能够通过PUSH和POP操作捕获程序的层次信息,这进一步使我们的模型能够捕获程序中的长期依赖性。我们在三个程序分析任务上评估所提出的模型,即,代码完成、程序分类和代码摘要。评估结果表明,我们提出的模型优于基线模型在所有的三个任务,表明通过捕获程序的结构信息与堆栈,我们提出的模型可以更精确地表示程序。
2020-02-11 cs.SE
Poplar: A Java Extension for Evolvable Component Integration
Java程序设计语言包含许多有助于基于组件的软件开发(CBSD)的功能,例如接口、可见性级别和对封装的强大支持。然而,组件演化经常会导致所谓的破坏性更改,这主要是因为组件以显式方法调用和字段访问的形式相互连接的刚性。我们提出了一个Java扩展,白杨树,我们目前正在开发。在Poplar中,组件间的依赖关系使用声明式查询来表示;使用规划算法生成的具体链接代码在编译时替换这些代码。Poplar包括一个基于类类型状态协议和标签的最小规约语言,以及一个轻量级的效果系统,它可以确保手写代码和生成的代码之间没有不必要的干扰。我们给出了几个例子,全自动组件集成使用白杨树,并展示了它的潜力,大大简化面向对象的软件开发,通过进化和静态检查的集成链接。
2011-06-09 cs.PL cs.SE
Proactive Empirical Assessment of New Language Feature Adoption via Automated Refactoring: The Case of Java 8 Default Methods
随着时间的推移,程序设计语言和平台不断改进,有时会产生新的语言功能,提供许多好处。然而,尽管有这些好处,开发人员可能并不总是愿意在他们的项目中采用它们。在本文中,我们描述了一个实证研究,我们评估通过一个特定的新的语言功能。研究开发人员如何使用(或不使用)新的语言功能在程序设计语言研究和工程中很重要,因为它使设计人员了解语言的可用性,从而用该语言创建有意义的程序。反过来,这些知识可以推动该领域未来的创新。在这里,我们探索Java 8默认方法,它允许接口包含(实例)方法实现。默认方法可以简化接口的演化,使某些普遍存在的设计模式变得多余,并提高模块性和可维护性。这项工作的重点是通过科学的方法和新的技术,发现开发人员发现这些构造有用的情况,以及它们没有的原因。虽然有几项研究围绕着评估新的语言特征,但据我们所知,这种结构以前没有被考虑过。尽管有这些好处,但我们发现开发人员并不是在所有情况下都采用默认方法。我们的研究包括提交pull request,将语言特性引入19个真实世界的开源Java项目,而不改变原始程序语义。这种新颖的评估技术是主动的,因为采用是由自动重构方法驱动的,而不是等待开发人员自己发现和集成功能。通过这种方式,我们提出了更早而不是更晚有效使用语言功能的最佳实践和模式,并且能够指导(不久的)未来的语言发展。我们预见这种技术在评估其他新的语言特性、设计模式和其他编程习惯方面是有用…
2018-03-27 cs.PL cs.SE
Java Source-code Clustering: Unifying Syntactic and Semantic Features
这是第19届逆向工程工作会议(WCRE 2012)论文集“软件集群:统一语法和语义规则”的配套草案。它详细地讨论了聚类过程,这出现在一个简略的形式的文件。它还包含了世界计算机考试组织文件中没有涉及的某些额外的过程步骤。聚类过程中描述的Java源代码的应用程序。然而,正如WCRE论文中所指出的,它可以无缝地适应许多其他编程范式。
2018-06-28 cs.SE
A Framework for Debugging Java Programs in a Bytecode
在软件工程领域,程序分析和理解一直被认为是一个非常具有挑战性的任务,因为它需要专门的时间和精力。由于其静态特性,对源代码的分析有时可能相对容易,然而,后端代码(字节码),特别是在Java编程方面,分析起来很复杂。在本文中,我们提出了一种方法论的方法来理解Java程序的字节码。提出了一个Java字节码调试过程的框架。此外,我们讨论了调试过程中的字节码理解从简单的多语句方面的数据流分析。最后,我们提出了一个比较分析的字节码随着模拟的建议框架的调试过程
2019-04-29 cs.FL cs.PL cs.SE
Software Vulnerability Prediction Knowledge Transferring Between Programming Languages
Ericsson Security Research(爱立信安全研究院);Vodafone(沃达丰)
开发自动化和智能化的软件漏洞检测模型一直受到研究和开发社区的极大关注。这方面最大的挑战之一是缺乏适用于所有不同程序设计语言的代码示例。在这项研究中,我们通过提出一种迁移学习技术来解决这个问题,该技术利用可用的数据集并生成一个模型来检测不同程序设计语言中的常见漏洞。我们使用C源代码样本来训练一个卷积神经网络(CNN)模型,然后,我们使用Java源代码样本来采用和评估学习的模型。我们使用来自两个基准数据集的代码样本:NIST软件保障参考数据集(SARD)和Draper VDISC数据集。实验结果表明,该模型能够检测出C和Java代码中的漏洞,平均召回率为72%.此外,我们采用可解释的人工智能来研究每个功能对所提出的模型中C和Java之间的知识转移机制的贡献。
2023-03-10 cs.AI cs.LG cs.SE
Refactoring Legacy JavaScript Code to Use Classes: The Good, The Bad and The Ugly
JavaScript系统正变得越来越复杂和庞大。为了解决实现这些系统所涉及的挑战,该语言正在发展,以包括几个用于大型编程的结构。例如,尽管语言是基于原型的,但最新的JavaScript标准,名为ECMAScript 6(ES6),提供了对实现类的本机支持。尽管大多数现代Web浏览器都支持ES6,但只有极少数应用程序使用类语法。在本文中,我们分析了迁移结构的过程,这些结构模拟遗留JavaScript代码中的类,以采用ES6引入的类的新语法。我们在八个遗留JavaScript系统上应用一组迁移规则。在我们的研究中,我们记录了:(a)迁移简单的情况(好的部分);(b)需要手动和临时迁移的情况(坏的部分);以及(c)由于ES6的限制和约束而无法迁移的情况(丑陋的部分)。八分之六的系统(75%)包含坏的和/或丑陋的情况。我们还收集了JavaScript开发人员对迁移代码以使用新的类语法的看法。
2017-03-05 cs.PL cs.SE
The Reproducibility of Programming-Related Issues in Stack Overflow Questions
软件开发人员经常使用Stack Overflow Q&A网站寻找代码级问题的解决方案。为了获得帮助,开发人员经常提交包含示例代码段和编程问题描述的问题。不幸的是,并不总是能够从代码段中重现问题,这可能会阻碍问题得到及时和适当的解决方案。我们对400个Java和400个Python问题中讨论的问题的可重复性进行了探索性研究。我们解析、编译、执行并仔细检查了这些问题中的代码段,以重现报告的编程问题。我们的研究成果有三个方面。首先,我们发现我们可以重现大约68%的Java和71%的Python问题,而我们无法使用代码段重现大约22%的Java和19%的Python问题。在可重现的问题中,大约67%的Java代码段和20%的Python代码段需要进行轻微或重大修改才能重现这些问题。其次,我们仔细研究了为什么编程问题不能被复制,并提供了基于证据的指导方针,为Stack Overflow问题编写有效的代码示例。第三,我们调查了问题的问题再现性状态和相应的答案元数据之间的相关性,例如接受答案的存在。根据我们的分析,一个可重复的问题比一个不可重复的问题至少有两倍的机会得到一个可接受的答案。此外,如果问题中报告的问题无法复制,收到已接受的答复的中位时间延迟将增加一倍。我们还调查了混杂因素(例如,声誉),并发现混杂因素不会损害再现性状态和回答元数据之间的相关性。
2021-12-25 cs.SE
Parichayana: An Eclipse Plugin for Detecting Exception Handling Anti-Patterns and Code Smells in Java Programs
反模式和代码气味是源代码中的标志,它们不是缺陷(不会阻止程序运行,也不会导致编译错误),而是更深层次和更大问题的指标。异常处理是一种编程构造,设计用于处理异常或异常条件(改变程序执行的正常流程)的发生。在本文中,我们提出了一个Eclipse插件(称为Parichayana),用于检测Java程序中的异常处理反模式和代码气味。Parichayana能够自动检测几个常见的例外处理编程错误。我们扩展了Eclipse IDE,并通过Parichayana插件(托管在GitHub上的免费开源)创建了新的菜单项和相关操作。我们比较和对比Parichayana与几个代码气味检测工具,并证明我们的工具提供了独特的能力,在现有的工具。我们已经创建了一个更新站点,开发人员可以使用Eclipse更新管理器从我们的站点安装Parichayana。我们在几个基于Java的大型开源项目中使用了Parichyana,并检测到异常处理反模式的存在
2016-12-31 cs.SE
Developing a High-Performance Process Mining Library with Java and Python Bindings in Rust
本文提出用 Rust 构建共享过程挖掘库,并提供 Java 与 Python 绑定,以在保证内存安全的同时获得高性能并融入 ProM、PM4Py 生态。
2024-01-25 cs.SE
BPjs --- a framework for modeling reactive systems using a scripting language and BP
我们描述了一个新的通用框架模型驱动的工程,基于行为编程的一些进展。我们开发的工具统一了到目前为止在行为编程中所做的几乎所有工作,在一组通用的接口下。它的架构支持可插入的事件选择策略,这可以使模型更加直观和紧凑。程序状态空间可以使用各种算法来遍历,例如DFS和A*。此外,程序状态以使得能够使用并行和分布式算法扫描状态空间的方式表示。使用此工具创建的可执行模型可以直接嵌入到Java应用程序中,从而实现模型优先的系统工程方法,最初创建并验证模型,然后逐渐围绕模型构建工作应用程序。模型本身由一组用JavaScript编写的小脚本组成(因此称为“BPjs”)。使用各种案例研究,本文展示了一个宽松的程序设计语言与正式的模型分析工具相结合,创造了一种有效的方式来开发强大的复杂系统。此外,正如我们从我们运行的实验课程中所了解到的,JavaScript的使用使从业者更容易使用这个系统,从而更容易使用模型检验和模型驱动工程。除了为行为编程中的开发和案例研究提供基础设施外,该工具还被设计为行为编程和模型驱动工程中的研究和创新的通用平台。
2018-06-03 cs.FL cs.PL cs.SE
Hyperstyle: A Tool for Assessing the Code Quality of Solutions to Programming Assignments
在软件工程中,仅仅编写只按预期工作的代码是不够的,即使它没有漏洞和错误。每种程序设计语言都有一个风格指南和一组由其社区定义的最佳实践,这些指南和最佳实践可以帮助从业者构建结构清晰、易于阅读和维护的解决方案。为了在教育过程中引入代码质量评估,我们开发了一个名为Hyperstyle的工具。为了使它反映编程社区的需求,同时易于扩展,我们在几个现有的专业链接器和代码检查器的基础上构建了它。Hyperstyle支持四种程序设计语言(Python、Java、Kotlin和JavaScript),可以作为独立工具使用,也可以集成到MOOC平台中。我们已将该工具整合至Stepik及JetBrains Academy两个教育平台,自2021年5月起每周处理约一百万份意见书。
2021-12-06 cs.SE
Java Code Analysis and Transformation into AWS Lambda Functions
软件开发人员面临的问题是,要么使他们的编程模型适应执行模型(例如云平台),要么找到适当的工具来自动适应模型和代码。一个可以从自动化启用中受益的最新执行模型是Function-as-a-Service。自动化这个过程需要一个管道,其中包括代码分析,转换和部署的步骤。在本文中,我们概述了Poetizer的设计和运行时特性,Poetizer是一种专门针对Java源代码作为输入和AWS Lambda作为输出实现管道的工具。我们通过观察两个有代表性的Java软件项目的Poverzer行为,为这个具体的“FaaSification”过程提供技术和经济指标。
2017-02-17 cs.DC cs.SE
Next-generation Web Applications with WebAssembly and TruffleWasm
在现代软件开发中,用于开发现代Web应用程序的各种框架和库的JavaScript生态系统具有许多优势。JavaScript是一种广为人知的解释型程序设计语言,易于学习和开始开发,并具有许多第三方库和扩展。然而,随着高度用户交互的网站和基于浏览器的游戏的兴起,在某些情况下,JavaBean可执行引擎可能会缺乏性能。因此,开发人员可以结合其他几种程序设计语言来创建一个多语言的用户交互式互操作系统,以开发高效的现代Web应用程序。互操作性模块提供了显著的优势,但由于高复杂性和较长的编译时间,在执行中也存在挑战。本文探讨了WebAssembly,一种二进制格式的编译目标,使用低级汇编类语言从其他程序设计语言定向。二进制格式由于其紧凑性而允许接近本机的性能水平,因为它优先使用低级语言。此外,作为我们之前对GraalVM生态系统研究的延续,我们分析了托管在GraalVM和Truffle Java框架上的基于WebAssembly的系统TruffleWasm的客语言实现。本文介绍了TruffleWasm的架构和审查GraalVM为基础的生态系统,以及在我们的学术环境中的性能测试结果。
2021-12-15 cs.SE
Java Extensions for OMNeT++
一方面,网络模拟框架是研究和开发活动的重要工具,以时间和成本效益的方式评估新方法。另一方面,Java作为一种高度平台无关的程序设计语言,非常适合异构场景中的快速原型设计。因此,Java仿真框架可以用于首先在仿真环境中执行新方法(和协议)的功能验证,然后使用原型Java实现在真实的测试平台中评估这些方法。最后,仿真模型可以使用真实世界的测量数据进行细化。不幸的是,据我们所知,没有令人满意的Java框架用于网络模拟,因为OMNeT++ Java支持在OMNeT++4.6版结束。因此,我们的贡献如下:我们提出的Java扩展OMNeT++ 5.0,使Java仿真模型的执行,并给出了详细的解释OMNeT++ Java扩展的工作原理,是基于Java本地接口。我们进行了几个案例研究,以评估OMNeT++的Java扩展的概念。最重要的是,我们表明,Java仿真模型和C++模型(例如,(从INET框架)是可能的。
2017-09-08 cs.SE
Vulnerability Detection in Popular Programming Languages with Language Models
本文研究了语言模型在JavaScript、Java、Python、PHP、Go和C/C++等流行编程语言中的漏洞检测有效性,发现JavaScript表现最佳,且代码复杂性与检测性能仅存在弱相关性。
2024-12-23 cs.CR cs.SE
An Empirical Study of Java Code Improvements Based on Stack Overflow Answer Edits
Faculty of Information and Communication Technology, Mahidol University(马希达大学信息与通信技术学院);State University of Ceara (UECE)(塞阿拉州立大学)
本研究通过分析Stack Overflow的Java回答编辑,识别可改进的开源Java代码,发现近7%的采纳回答有多次修订,近半数编辑代码可应用于开源项目,11个bug修复方案被接受。
2026-08-25 cs.SE
Evidence-Based Comparison of Modularity Support Between Java and Object Teams
背景资料:面向对象编程(AOP)是一种新兴的编程范式,其重点是提高模块化,强调横切关注点的模块化。目的:本文的目标是评估在何种程度上的AOP语言-ObjectTeams/Java(OT/J)-提高了软件系统的模块化。这种改进已经声称,但据我们所知,本文是第一次尝试提出定量证据it. Method:我们比较功能等效的实现的四个设计模式,在Java和OT/J开发,使用软件度量。结果:我们的比较结果支持文献中提出的模块化改进要求。对于使用的七个度量中的六个,模式的OT/J版本获得了明显更好的结果。局限性:这项工作使用了一组最初为面向对象(OO)系统定义的指标。这可能是度量有偏见的情况,因为它们是在面向对象编程(OO programming,OOP)的上下文中创建的,在AOP出现之前。我们认为这种比较是一个垫脚石,最终,我们计划用范式独立的指标来评估模块化的改进,这将消除偏见。本文中使用的样本中的每个单独的例子都很小。在将来,我们计划使用更大的系统来复制这个实验,在这些系统中AOP的好处可能更加明显。结论:这项工作的贡献与证据,以填补空白的定量结果,支持所谓的好处,软件模块化带来的AOP语言,即OT/J。
2011-09-09 cs.SE
Boosting Automatic Java-to-Cangjie Translation with Multi-Stage LLM Training and Error Repair
Nanjing University of Aeronautics and Astronautics(南京航空航天大学)
本文提出多阶段LLM训练框架,结合编译器反馈和错误修复,提升Java到Cangjie的翻译准确性与语义一致性,实验显示在有限平行数据下功能等价性提升6.06%。
2026-05-08 cs.SE
Software Security analysis, static and dynamic testing in java and C environment, a comparative study
本文的主要工作是针对各种程序设计语言设计的主要源代码中出现的缓冲区溢出异常进行分析。它描述了如何改进代码并增加其强度,以抵御代码中易受攻击区域发生的安全盗窃。使用的主要语言是JAVA,被认为是最面向对象的语言之一,仍然会产生很多错误,如堆栈溢出,非法/不适当的方法重写。我使用局限于JAVA的工具来测试如何在编译之前纠正代码中的弱点。字节码盗窃是很难被征服的,所以最好是在纯java代码本身中摆脱它。研究中使用的工具是PMD(编程错误检测器),它有助于检测在不久的将来会弹出错误的代码行,例如hashcode(内存映射)重写中的缺陷,由于这些缺陷,Java代码将无法正常运行。另一个工具是FindBUGS,它提供了代码的测试器来分析代码中的弱点,如无限循环,非同步等待,死锁情况,空引用和解引用。为上述工具提供基础的另一个工具是JaCoCo代码覆盖分析,用于检测代码的不可达部分和未使用条件,这改善了空间复杂度并有助于容易地澄清错误。通过本文,我们设计了一种防止数据丢失的算法。主要受众是白盒测试人员,他们可能会在主要的源程序中遗漏基本的代码行,如索引变量、无限循环和不适当的散列代码。该算法用于减少缓冲区溢出情况下的损坏
2012-08-15 cs.CR cs.SE
Characterizing JavaScript Security Code Smells
针对JavaScript安全代码异味研究匮乏的问题,提出24种安全代码异味,映射至CWE定义的安全问题,提供重构方案与检测机制,并基于现有开源工具实现检测,助力开发人员识别潜在安全弱点。
2024-11-28 cs.CR cs.SE
Predicting long time contributors with knowledge units of programming languages: an empirical study
本研究提出基于Java编程语言知识单元(KUs)的KULTC模型,用于早期预测长期贡献者,结合BAOLTC特征后AUC提升16.5%,显著优于现有方法。
2024-05-22 cs.SE
EsoLang-Bench: Evaluating Genuine Reasoning in Large Language Models via Esoteric Programming Languages
Lossfunk
EsoLang-Bench通过五种奇特编程语言评估大语言模型在分布外编程语言上的推理能力,发现前沿模型在处理陌生语言时存在显著能力差距。
2026-05-11 cs.AI cs.LG cs.SE
Resolving Java Code Repository Issues with iSWE Agent
IBM
本文提出iSWE代理,专注于Java问题解决,结合基于规则和模型的技术,提升企业软件开发效率。
2026-03-11 cs.AI cs.MA cs.SE
Towards Architectural Programming of Embedded Systems
将架构元素与现代程序设计语言集成对于确保架构设计和编程的顺利结合至关重要。在这个立场声明中,我们激励的分布式,异步通信系统和Java的架构描述的组合,这样的集成的一个例子。结果是一个普通的程序设计语言,它在一个视图中展示了体系结构、数据结构和行为。不同视图之间的映射或跟踪是不必要的。编译器的原型实现展示了架构编程的可能性和挑战。
2014-09-08 cs.SE
How do annotations affect Java code readability?
本文通过332人调查和15对Java代码片段,研究了代码注解对可读性的影响,发现开发者对注解提升可读性的看法存在分歧但无共识,为API设计提供了参考。
2024-04-26 cs.SE
Memory and Resource Leak Defects and their Repairs in Java Projects
尽管在软件工程方面付出了巨大的努力,并且有程序设计语言的支持,但资源和内存泄漏仍然是一个棘手的问题,即使在内存管理语言(如Java)中也是如此。了解导致泄漏的缺陷的属性、泄漏如何表现以及如何修复它们是设计更好的方法来避免、诊断和修复泄漏相关错误的基本前提。我们对15个大型开源Java项目的491个问题进行了详细的实证研究。这项研究提出了分类的泄漏类型,导致他们的缺陷,并为修复行动。我们调查,在几个方面,每个分类内的分布和它们之间的关系。我们发现,手动代码检查和手动运行时检测仍然是泄漏检测的主要方法。我们发现,大多数的错误表现在无错误的执行路径,和开发人员修复泄漏的缺陷在更短的时间比非泄漏的缺陷。我们还确定了13个经常性的代码转换的修复补丁。根据我们的研究结果,我们得出了开发人员如何避免,检测,隔离和修复泄漏相关的错误的各种影响。
2019-06-27 cs.SE
Serializing Java Objects in Plain Code
Karlsruhe Institute of Technology(卡尔斯鲁厄理工学院);KTH Royal Institute of Technology(皇家理工学院)
本文提出纯代码序列化方法,通过将Java对象序列化为Java源代码,提高在测试用例中读取对象的可读性,并通过实验验证其性能和实用性。
2025-12-13 cs.SE
BuGL -- A Cross-Language Dataset for Bug Localization
错误定位是从给定的错误报告和源代码中定位潜在的易出错文件或方法的过程。在文献中存在关于缺陷定位的广泛研究,其集中于应用信息检索技术或机器学习/深度学习方法或两者来检测缺陷的位置。所有方法的共同前提是提供良好的数据集,在本例中,数据集是由6个Java项目组成的标准基准数据集,在某些情况下,超过6个Java项目。现有的数据集不包括其他程序设计语言的项目,尽管需要调查特定的和跨项目的错误定位。据我们所知,我们不知道有任何数据集可以解决这一问题。在本文中,我们提出了BuGL,一个大规模的跨语言数据集。BuGL包含超过10,000个bug报告,这些报告来自用四种程序设计语言编写的开源项目,即C、C++、Java和Python。该数据集包含Bug报告和Pull-Requests等信息。BuGL的目标是在bug本地化领域展开新的研究机会。
2020-04-19 cs.SE
An Empirical Study of Kotlin-Java Cross-Dependency Issues and Their Detection
Nanjing University of Science and Technology, China(南京理工大学);Huawei Technologies Co., Ltd.(华为技术有限公司);School of Computer Science, Wuhan University, China(武汉大学计算机学院)
本文通过DependExtractor工具对40个Kotlin-Java项目开展实证研究,明确了跨语言依赖特征,识别出10类问题及修复策略,并实现InteropScan工具用于检测问题,为开发者提供帮助。
2026-08-06 cs.SE
Processing/p5 Defined through Practice and Learning
Processing Foundation(Processing基金会);State University of New York at Purchase(纽约州立大学帕切斯学院)
本文通过对JavaScript、Lua中Processing/p5实现的案例研究,提出了跨语言的Processing/p5软件决策指导维度,为创意编码工具的开发提供了框架与方向。
2026-08-28 cs.HC cs.SE
DiffSearch: A Scalable and Precise Search Engine for Code Changes
成功的项目的源代码一直在不断发展,导致成千上万的代码更改存储在源代码存储库中。这些丰富的数据可能是有用的,例如,查找与计划的代码更改相似的更改或重复代码改进的示例。本文介绍了DiffSearch,一个搜索引擎,给定一个查询,描述了一个代码的变化,返回一组匹配的查询的变化。这一方法得益于三个关键贡献。首先,我们提出了一个查询语言,扩展了底层的编程语言与通配符和占位符,提供了一个直观的方式制定查询,很容易适应不同的程序设计语言。其次,为了确保可扩展性,该方法在一次性预处理步骤中索引代码更改,将其映射到特征空间中,然后在特征空间中为每个查询执行有效的搜索。第三,保证精度,即,任何返回的代码变化确实匹配给定的查询,我们提出了一个基于树的匹配算法,检查是否可以扩展到一个具体的代码变化的查询。我们提出了Java,JavaScript和Python的实现,并表明该方法在几秒钟内响应查询超过一百万个代码更改,具有80.7%的Java,89.6%的Python和90.4%的JavaScript的召回,使用户能够找到相关的代码更改更有效地比基于正则表达式的搜索,并且有助于收集真实世界错误修复的大规模数据集。
2022-10-31 cs.SE