222 results on '"Java Native Interface"'
Search Results
2. APPLICATION OF INCREMENTAL SATISFIABILITY PROBLEM SOLVERS FOR NON-DETERMINISTIC POLYNOMIAL-TIME HARD PROBLEMS AS ILLUSTRATED BY MINIMAL BOOLEAN FORMULA SYNTHESIS PROBLEM
- Author
-
Konstantin I. Chukharev
- Subjects
satisfiability problem (sat) ,incremental satisfiability problem (sat) solvers ,non-deterministic polynomial-time (np) hard problems ,constraint programming ,boolean formula synthesis ,tseytin transformations ,symmetry breaking ,kotlin ,framework ,java native interface ,Optics. Light ,QC350-467 ,Electronic computers. Computer science ,QA75.5-76.95 - Abstract
Subject of Research. The paper considers a method for solution of the nondeterministic polynomial hard problem (NP-hard problem) of a minimal Boolean formula synthesis from a given truth table. The solution of this problem is proposed based on its reduction to the Boolean satisfiability problem (SAT). The issues of efficient and convenient software implementation are discussed for reducing nondeterministic polynomial hard problems to the satisfiability problem. Method. For a minimal Boolean formula synthesis, the constraint programming approach was used: a SAT-formula was created for a given truth table, satisfiable if and only if, there exists a Boolean formula of a given size that satisfies the given truth table. The developed method accent is the application of incremental satisfiability problem solvers. Main Results. A method is proposed for synthesis of a Boolean formula, minimal with respect to the number of operators and terminals, for a given truth table. The method is based on reducing to satisfiability problem and provides the usage of incremental satisfiability problem solvers. The kotlin-satlib framework is developed with the possibility to use the Kotlin and Java languages effectively and conveniently for the software implementation of reducing various nondeterministic polynomial-time hard problems to satisfiability problem. Native interaction with satisfiability problem solvers by Java Native Interface (JNI) technology is used. The proposed method for the minimal Boolean formula synthesis is implemented in the Kotlin programming language using the developed kotlin-satlib framework. Practical Relevance. An experimental study on the example of minimal Boolean formula synthesis has shown that the usage of incremental satisfiability problem solvers for nondeterministic polynomial hard problems is reasonable, since it reduces the total solving time in comparison with the non-incremental approach application.
- Published
- 2020
- Full Text
- View/download PDF
3. JUSTGen: Effective Test Generation for Unspecified JNI Behaviors on JVMs.
- Author
-
Sungjae Hwang, Sungho Lee, Jihoon Kim, and Sukyoung Ryu
- Subjects
JAVA programming language ,MOBILE apps ,ARTIFICIAL intelligence ,COMPUTER science ,SOFTWARE engineering - Abstract
Java Native Interface (JNI) provides a way for Java applications to access native libraries, but it is difficult to develop correct JNI programs. By leveraging native code, the JNI enables Java developers to implement efficient applications and to reuse code written in other programming languages such as C and C++. Besides, the core Java libraries already use the JNI to provide system features like a graphical user interface. As a result, many mainstream Java Virtual Machines (JVMs) support the JNI. However, due to the complex interoperation semantics between different programming languages, implementing correct JNI programs is not trivial. Moreover, because of the performance overhead, JVMs do not validate erroneous JNI interoperations by default, but they validate them only when the debug feature, the -Xcheck:jni option, is enabled. Therefore, the correctness of JNI programs highly relies on the checks by the -Xcheck:jni option of JVMs. Questions remain, however, on the quality of the checks provided by the feature. Are there any properties that the -Xcheck:jni option fails to validate? If so, what potential issues can arise due to the lack of such validation? To the best of our knowledge, no research has explored these questions in-depth. In this paper, we empirically study the validation quality and impacts of the -Xcheck:jni option on mainstream JVMs using unspecified corner cases in the JNI specification. Such unspecified cases may lead to unexpected run-time behaviors because their semantics is not defined in the specification. For a systematic study, we propose JUSTGEN, a semi-automated approach to identify unspecified cases from a specification and generate test programs. JUSTGEN receives the JNI specification written in our domain specific language (DSL), and automatically discovers unspecified cases using an SMT solver. It then generates test programs that trigger the behaviors of unspecified cases. Using the generated tests, we empirically study the validation ability of the -Xcheck:jni option. Our experimental result shows that the JNI debug feature does not validate thousands of unspecified cases on JVMs, and they can cause critical run-time errors such as violation of the Java type system and memory corruption. We reported 792 unspecified cases that are not validated by JVMs to their corresponding JVM vendors. Among them, 563 cases have been fixed and the remaining cases will be fixed in near future. Based on our empirical study, we believe that the JNI specification should specify the semantics of the missing cases clearly and the debug feature should be supported completely. [ABSTRACT FROM AUTHOR]
- Published
- 2021
- Full Text
- View/download PDF
4. On the Effectiveness of Code-Reuse-Based Android Application Obfuscation
- Author
-
Tang, Xiaoxiao, Liang, Yu, Ma, Xinjie, Lin, Yan, Gao, Debin, Hutchison, David, Series editor, Kanade, Takeo, Series editor, Kittler, Josef, Series editor, Kleinberg, Jon M., Series editor, Mattern, Friedemann, Series editor, Mitchell, John C., Series editor, Naor, Moni, Series editor, Pandu Rangan, C., Series editor, Steffen, Bernhard, Series editor, Terzopoulos, Demetri, Series editor, Tygar, Doug, Series editor, Weikum, Gerhard, Series editor, Hong, Seokhie, editor, and Park, Jong Hwan, editor
- Published
- 2017
- Full Text
- View/download PDF
5. Executing native Java code in R: an approach based on a local server
- Author
-
Mathieu Fortin
- Subjects
Interoperability ,Java local server ,TCP/IP connection ,R vectorization ,Java Native Interface ,Electronic computers. Computer science ,QA75.5-76.95 - Abstract
The R language is widely used for data analysis. However, it does not allow for complex object-oriented implementation and it tends to be slower than other languages such as Java, C and C++. Consequently, it can be more computationally efficient to run native Java code in R. To do this, there exist at least two approaches. One is based on the Java Native Interface (JNI) and it has been successfully implemented in the rJava package. An alternative approach consists of running a local server in Java and linking it to an R environment through a socket connection. This alternative approach has been implemented in an R package called J4R. This article shows how this approach makes it possible to simplify the calls to Java methods and to integrate the R vectorization. The downside is a loss of performance. However, if the vectorization is used in conjunction with multithreading, this loss of performance can be compensated for.
- Published
- 2020
- Full Text
- View/download PDF
6. Paralldroid: Performance Analysis of GPU Executions
- Author
-
Acosta, Alejandro, Almeida, Francisco, Hutchison, David, Series editor, Kanade, Takeo, Series editor, Kittler, Josef, Series editor, Kleinberg, Jon M., Series editor, Kobsa, Alfred, Series editor, Mattern, Friedemann, Series editor, Mitchell, John C., Series editor, Naor, Moni, Series editor, Nierstrasz, Oscar, Series editor, Pandu Rangan, C., Series editor, Steffen, Bernhard, Series editor, Terzopoulos, Demetri, Series editor, Tygar, Doug, Series editor, Weikum, Gerhard, Series editor, Lopes, Luís, editor, Žilinskas, Julius, editor, Costan, Alexandru, editor, Cascella, Roberto G., editor, Kecskemeti, Gabor, editor, Jeannot, Emmanuel, editor, Cannataro, Mario, editor, Ricci, Laura, editor, Benkner, Siegfried, editor, Petit, Salvador, editor, Scarano, Vittorio, editor, Gracia, José, editor, Hunold, Sascha, editor, Scott, Stephen L., editor, Lankes, Stefan, editor, Lengauer, Christian, editor, Carretero, Jesús, editor, Breitbart, Jens, editor, and Alexander, Michael, editor
- Published
- 2014
- Full Text
- View/download PDF
7. A Common Platform API for Android
- Author
-
Puder, Arno, Akan, Ozgur, Series editor, Bellavista, Paolo, Series editor, Cao, Jiannong, Series editor, Dressler, Falko, Series editor, Ferrari, Domenico, Series editor, Gerla, Mario, Series editor, Kobayashi, Hisashi, Series editor, Palazzo, Sergio, Series editor, Sahni, Sartaj, Series editor, Shen, Xuemin (Sherman), Series editor, Stan, Mircea, Series editor, Xiaohua, Jia, Series editor, Zomaya, Albert, Series editor, Coulson, Geoffrey, Series editor, Borcea, Cristian, editor, Giannelli, Carlo, editor, Magedanz, Thomas, editor, and Schreiner, Florian, editor
- Published
- 2013
- Full Text
- View/download PDF
8. Java Database Connectivity (JDBC)
- Author
-
Graba, Jan and Graba, Jan
- Published
- 2013
- Full Text
- View/download PDF
9. Tools of the Trade
- Author
-
Nolan, Godfrey and Nolan, Godfrey
- Published
- 2012
- Full Text
- View/download PDF
10. Interfacing Java to Hardware Coprocessors and FPGAs
- Author
-
Whitham, Jack, Audsley, Neil, Higuera-Toledano, M. Teresa, editor, and Wellings, Andy J., editor
- Published
- 2012
- Full Text
- View/download PDF
11. Extending OWL-S to nested services: an application to optimum wireless network planning
- Author
-
Esposito, Alessandra, Tarricone, Luciano, Vallone, Laura, and Sobh, Tarek, editor
- Published
- 2010
- Full Text
- View/download PDF
12. Java Database Connectivity
- Author
-
Poo, Danny, Kiong, Derek, Ashok, Swarnalatha, Poo, Danny, Kiong, Derek, and Ashok, Swarnalatha
- Published
- 2008
- Full Text
- View/download PDF
13. Technology
- Author
-
Ponzi, Mario Negro, Laamanen, Heimo, Morisio, Maurizio, editor, and Torchiano, Marco, editor
- Published
- 2006
- Full Text
- View/download PDF
14. Dancing Around Device Limitations
- Author
-
Virkus, Robert
- Published
- 2005
- Full Text
- View/download PDF
15. Destination of Logging—The Appender Objects
- Author
-
Gupta, Samudra
- Published
- 2005
- Full Text
- View/download PDF
16. Risk-Informed Decision Making with PARAGON™
- Author
-
Shanley, Leo, True, Doug, Parsley, Edward, Steinmetz, John, Burchill, William, Spitzer, Cornelia, editor, Schmocker, Ulrich, editor, and Dang, Vinh N., editor
- Published
- 2004
- Full Text
- View/download PDF
17. Distributing Security-Mediated PKI
- Author
-
Vanrenen, Gabriel, Smith, Sean, Kanade, Takeo, editor, Kittler, Josef, editor, Kleinberg, Jon M., editor, Mattern, Friedemann, editor, Mitchell, John C., editor, Naor, Moni, editor, Nierstrasz, Oscar, editor, Pandu Rangan, C., editor, Steffen, Bernhard, editor, Sudan, Madhu, editor, Terzopoulos, Demetri, editor, Tygar, Dough, editor, Vardi, Moshe Y., editor, Weikum, Gerhard, editor, Katsikas, Sokratis K., editor, Gritzalis, Stefanos, editor, and López, Javier, editor
- Published
- 2004
- Full Text
- View/download PDF
18. DDEMA: A Data Driven Environment for Multiphysics Applications
- Author
-
Michopoulos, John, Tsompanopoulou, Panagiota, Houstis, Elias, Rice, John, Farhat, Charbel, Lesoinne, Michel, Lechenault, Frederic, Goos, G., editor, Hartmanis, J., editor, van Leeuwen, J., editor, Sloot, Peter M. A., editor, Abramson, David, editor, Bogdanov, Alexander V., editor, Gorbachev, Yuriy E., editor, Dongarra, Jack J., editor, and Zomaya, Albert Y., editor
- Published
- 2003
- Full Text
- View/download PDF
19. Performance Modeling and Evaluation of Java Message-Passing Primitives on a Cluster
- Author
-
Taboada, Guillermo L., Touriño, Juan, Doallo, Ramón, Goos, Gerhard, editor, Hartmanis, Juris, editor, van Leeuwen, Jan, editor, Dongarra, Jack, editor, Laforenza, Domenico, editor, and Orlando, Salvatore, editor
- Published
- 2003
- Full Text
- View/download PDF
20. Composing Distributed Components with the Component Workbench
- Author
-
Oberleitner, Johann, Gschwind, Thomas, Goos, Gerhard, editor, Hartmanis, Juris, editor, van Leeuwen, Jan, editor, Coen-Porisini, Alberto, editor, and van der Hoek, André, editor
- Published
- 2003
- Full Text
- View/download PDF
21. On the Impact of Interlanguage Dependencies in Multilanguage Systems Empirical Case Study on Java Native Interface Applications (JNI)
- Author
-
Ellis E. Eghan, Fehmi Jaafar, Manel Grichi, Bram Adams, and Mouna Abidi
- Subjects
021103 operations research ,Dependency (UML) ,Java ,Computer science ,Programming language ,Java Native Interface ,0211 other engineering and technologies ,02 engineering and technology ,computer.software_genre ,Software quality ,Interlanguage ,Constant (computer programming) ,Software bug ,Software system ,Electrical and Electronic Engineering ,Safety, Risk, Reliability and Quality ,computer ,computer.programming_language - Abstract
Nowadays, developers are often using multiple programming languages to exploit the advantages of each language and to reuse code. However, dependency analysis across multilanguage is more challenging compared to mono-language systems. In this article, we introduce two approaches for multilanguage dependency analysis: static multilanguage dependency analyzer) and historical multilanguage dependency analyzer, which we apply on ten open-source multilanguage systems to empirically analyze the prevalence of the dependencies across languages, i.e., interlanguage dependencies and their impact on software quality and security. Our main results show that: the more interlanguage dependencies, the higher the risk of bugs and vulnerabilities being introduced, while this risk remains constant for intralanguage dependencies; the percentage of bugs within interlanguage dependencies is three times higher than the percentage of bugs identified in intralanguage dependencies; the percentage of vulnerabilities within interlanguage dependencies is twice the percentage of vulnerabilities introduced in intralanguage dependencies.
- Published
- 2021
- Full Text
- View/download PDF
22. A Simple, Fault Tolerant Naming Space for the HARNESS Metacomputing System
- Author
-
Migliardi, Mauro, Sunderam, Vaidy, Frisiani, Arrigo, Goos, Gerhard, editor, Hartmanis, Juris, editor, van Leeuwen, Jan, editor, Dongarra, Jack, editor, Kacsuk, Peter, editor, and Podhorszki, Norbert, editor
- Published
- 2000
- Full Text
- View/download PDF
23. mpiJava: An object-oriented java interface to MPI
- Author
-
Baker, Mark, Carpenter, Bryan, Fox, Geoffrey, Hoon Ko, Sung, Lim, Sang, Goos, Gerhard, editor, Hartmanis, Juris, editor, van Leeuwen, Jan, editor, Rolim, José, editor, Mueller, Frank, editor, Zomaya, Albert Y., editor, Ercal, Fikret, editor, Olariu, Stephan, editor, Ravindran, Binoy, editor, Gustafsson, Jan, editor, Takada, Hiroaki, editor, Olsson, Ron, editor, Kale, Laxmikant V., editor, Beckman, Pete, editor, Haines, Matthew, editor, ElGindy, Hossam, editor, Caromel, Denis, editor, Chaumette, Serge, editor, Fox, Geoffrey, editor, Pan, Yi, editor, Li, Keqin, editor, Yang, Tao, editor, Chiola, G., editor, Conte, G., editor, Mancini, L. V., editor, Méry, Domenique, editor, Sanders, Beverly, editor, Bhatt, Devesh, editor, and Prasanna, Viktor, editor
- Published
- 1999
- Full Text
- View/download PDF
24. PVM Emulation in the Harness Metacomputing System: A Plug-In Based Approach
- Author
-
Migliardi, Mauro, Sunderam, Vaidy, Goos, Gerhard, editor, Hartmanis, Juris, editor, van Leeuwen, Jan, editor, Dongarra, Jack, editor, Luque, Emilio, editor, and Margalef, Tomàs, editor
- Published
- 1999
- Full Text
- View/download PDF
25. Towards portable message passing in Java: Binding MPI
- Author
-
Mintchev, Sava, Getov, Vladimir, Goos, Gerhard, editor, Hartmanis, Juris, editor, van Leeuwen, Jan, editor, Bubak, Marian, editor, Dongarra, Jack, editor, and Waśniewski, Jerzy, editor
- Published
- 1997
- Full Text
- View/download PDF
26. Design and implementation of Java bindings in Open MPI.
- Author
-
Vega-Gisbert, Oscar, Roman, Jose E., and Squyres, Jeffrey M.
- Subjects
- *
MAGNETIC particle imaging , *JAVA programming language , *COMPUTER programming , *APPLICATION program interfaces , *APPLICATION software - Abstract
This paper describes the Java MPI bindings that have been included in the Open MPI distribution. Open MPI is one of the most popular implementations of MPI, the Message-Passing Interface, which is the predominant programming paradigm for parallel applications on distributed memory computers. We have added Java support to Open MPI, exposing MPI functionality to Java programmers. Our approach is based on the Java Native Interface, and has similarities with previous efforts, as well as important differences. This paper serves as a reference for the application program interface, and in addition we provide details of the internal implementation to justify some of the design decisions. We also show some results to assess the performance of the bindings. [ABSTRACT FROM AUTHOR]
- Published
- 2016
- Full Text
- View/download PDF
27. Hardware Software Interfacing for FPGA Configuration
- Author
-
R. S. Gamad, Trinath Somarouthu, and Yashwarya Khandait
- Subjects
Hardware architecture ,Computer science ,Java Native Interface ,business.industry ,Interface (computing) ,USB ,law.invention ,Software ,Interfacing ,law ,Embedded system ,business ,Programmer ,Field-programmable gate array - Abstract
In this paper, FPGA Configuration is implemented in which programmable circuit of a FPGA and a USB-PHY transceiver are bring together to form new programming interface. Purpose of FPGA configurartion by Flash programmer is to minimize software and communication overhead to achieve close to theoretical programming time possible on polarfire devices. Although the focus is to speed up polarfire configuration, previous generation of flash devices could take advantage of the hardware architecture and achieve faster programming time as well. FPGA offers a variety of programming Option; FPGA device usage JTAG or SPI interface to configure on-chip system controller through its dedicated USB port. To achieve that we used java native Interface which creates libraries to be used with a proprietary interpreter tool, which provide us flexibility to configure FPGA devices with JTAG Instructions. Visual studio is used to inherit product specific libraries along with JNI. This platform can also be used by broad range of applications wherever high-speed data transfer is required. USB 3.0 capable host is used for high speed communication.
- Published
- 2021
- Full Text
- View/download PDF
28. Too Quiet in the Library: An Empirical Study of Security Updates in Android Apps' Native Code
- Author
-
Mathias Payer, Joshua Garcia, Arda Unal, and Sumaya Almanee
- Subjects
FOS: Computer and information sciences ,Computer Science - Cryptography and Security ,Java ,Java Native Interface ,business.industry ,Computer science ,020207 software engineering ,02 engineering and technology ,World Wide Web ,Metadata ,Software Engineering (cs.SE) ,Computer Science - Software Engineering ,Identification (information) ,020204 information systems ,0202 electrical engineering, electronic engineering, information engineering ,The Internet ,Android (operating system) ,business ,computer ,Rename ,Machine code ,Cryptography and Security (cs.CR) ,computer.programming_language - Abstract
Android apps include third-party native libraries to increase performance and to reuse functionality. Native code is directly executed from apps through the Java Native Interface or the Android Native Development Kit. Android developers add precompiled native libraries to their projects, enabling their use. Unfortunately, developers often struggle or simply neglect to update these libraries in a timely manner. This results in the continuous use of outdated native libraries with unpatched security vulnerabilities years after patches became available. To further understand such phenomena, we study the security updates in native libraries in the most popular 200 free apps on Google Play from Sept. 2013 to May 2020. A core difficulty we face in this study is the identification of libraries and their versions. Developers often rename or modify libraries, making their identification challenging. We create an approach called LibRARIAN (LibRAry veRsion IdentificAtioN) that accurately identifies native libraries and their versions as found in Android apps based on our novel similarity metric bin(2)sim. LibRARIAN leverages different features extracted from libraries based on their metadata and identifying strings in read-only sections. We discovered 53/200 popular apps (26.5%) with vulnerable versions with known CVEs between Sept. 2013 and May 2020, with 14 of those apps remaining vulnerable. We find that app developers took, on average, 528.71 +/- 40.20 days to apply security patches, while library developers release a security patch after 54.59 +/- 8.12 days-a 10 times slower rate of update.To further understand such phenomena, we study the security updates in native libraries in the most popular 200 free apps on Google Play from Sept. 2013 to May 2020. A core difficulty we face in this study is the identification of libraries and their versions. Developers often rename or modify libraries, making their identification challenging. We create an approach called LibRARIAN (LibRAry veRsion IdentificAtioN) that accurately identifies native libraries and their versions as found in Android apps based on our novel similarity metric bin(2)sim. LibRARIAN leverages different features extracted from libraries based on their metadata and identifying strings in read-only sections. We discovered 53/200 popular apps (26.5%) with vulnerable versions with known CVEs between Sept. 2013 and May 2020, with 14 of those apps remaining vulnerable. We find that app developers took, on average, 528.71 +/- 40.20 days to apply security patches, while library developers release a security patch after 54.59 +/- 8.12 days-a 10 times slower rate of update.
- Published
- 2021
- Full Text
- View/download PDF
29. Broadening horizons of multilingual static analysis
- Author
-
Hyogun Lee, Sukyoung Ryu, and Sungho Lee
- Subjects
Java ,Computer science ,Java Native Interface ,Semantics (computer science) ,Programming language ,Foreign language ,020207 software engineering ,02 engineering and technology ,Static analysis ,Semantics ,computer.software_genre ,Interoperation ,Program analysis ,Software bug ,0202 electrical engineering, electronic engineering, information engineering ,Language interoperability ,Compiler ,computer ,computer.programming_language - Abstract
Most programming languages support foreign language interoperation that allows developers to integrate multiple modules implemented in different languages into a single multilingual program. While utilizing various features from multiple languages expands expressivity, differences in language semantics require developers to understand the semantics of multiple languages and their inter-operation. Because current compilers do not support compile-time checking for interoperation, they do not help developers avoid in-teroperation bugs. Similarly, active research on static analysis and bug detection has been focusing on programs written in a single language. In this paper, we propose a novel approach to analyze multilingual programs statically. Unlike existing approaches that extend a static analyzer for a host language to support analysis of foreign function calls, our approach extracts semantic summaries from programs written in guest languages using a modular analysis technique, and performs a whole-program analysis with the extracted semantic summaries. To show practicality of our approach, we design and implement a static analyzer for multilingual programs, which analyzes JNI interoperation between Java and C. Our empirical evaluation shows that the analyzer is scalable in that it can construct call graphs for large programs that use JNI interoperation, and useful in that it found 74 genuine interoperation bugs in real-world Android JNI applications.
- Published
- 2020
- Full Text
- View/download PDF
30. Exception analysis in the Java Native Interface.
- Author
-
Li, Siliang and Tan, Gang
- Subjects
- *
JAVA programming language , *COMPUTER interfaces , *COMPUTER programming , *C++ , *SOFTWARE engineering , *COMPUTER systems - Abstract
Abstract: A Foreign Function Interface (FFI) allows one host programming language to interoperate with another foreign language. It enables efficient software development by permitting developers to assemble components in different languages. One typical FFI is the Java Native Interface (JNI), through which Java programs can invoke native-code components developed in C, C++, or assembly code. Although FFIs bring convenience to software development, interface code developed in FFIs is often error prone because of the lack of safety and security enforcement. This paper introduces a static-analysis framework, TurboJet, which finds exception-related bugs in JNI applications. It finds bugs of inconsistent exception declarations and bugs of mishandling JNI exceptions. TurboJet is carefully engineered to achieve both high efficiency and accuracy. We have applied TurboJet on a set of benchmark programs and identified many errors. We have also implemented a practical Eclipse plug-in based on TurboJet that can be used by JNI programmers to find errors in their code. [Copyright &y& Elsevier]
- Published
- 2014
- Full Text
- View/download PDF
31. Identifying Java calls in native code via binary scanning
- Author
-
George Fourtounis, Leonidas Triantafyllou, and Yannis Smaragdakis
- Subjects
Java ,Computer science ,Java Native Interface ,Programming language ,020207 software engineering ,02 engineering and technology ,Static analysis ,computer.software_genre ,Bytecode ,Symbol (programming) ,020204 information systems ,0202 electrical engineering, electronic engineering, information engineering ,Android (operating system) ,Machine code ,computer ,Mock object ,computer.programming_language - Abstract
Current Java static analyzers, operating either on the source or bytecode level, exhibit unsoundness for programs that contain native code. We show that the Java Native Interface (JNI) specification, which is used by Java programs to interoperate with Java code, is principled enough to permit static reasoning about the effects of native code on program execution when it comes to call-backs. Our approach consists of disassembling native binaries, recovering static symbol information that corresponds to Java method signatures, and producing a model for statically exercising these native call-backs with appropriate mock objects. The approach manages to recover virtually all Java calls in native code, for both Android and Java desktop applications—(a) achieving 100% native-to-application call-graph recall on large Android applications (Chrome, Instagram) and (b) capturing the full native call-back behavior of the XCorpus suite programs.
- Published
- 2020
- Full Text
- View/download PDF
32. Neutrino: Efficient InfiniBand Access for Java Applications
- Author
-
Michael Schöttner, Fabian Ruhland, and Filip Krakowski
- Subjects
Remote direct memory access ,Java ,business.industry ,Computer science ,Java Native Interface ,Message passing ,InfiniBand ,Cloud computing ,02 engineering and technology ,epoll ,Supercomputer ,computer.software_genre ,020204 information systems ,0202 electrical engineering, electronic engineering, information engineering ,Operating system ,020201 artificial intelligence & image processing ,business ,computer ,computer.programming_language - Abstract
Fast networks like InfiniBand are important for large-scale applications and big data analytics. Current InfiniBand hardware offers bandwidths of up to 200 Gbit/s with latencies of less than two microseconds. While it is mainly used in high performance computing, there are also some applications in the field of big data analytics. In addition, some cloud providers are offering instances equipped with InfiniBand hardware. Many big data applications and frameworks are written using the Java programming language, but the Java Development Kit does not provide native support for InfiniBand. To this end we propose neutrino, a network library providing comfortable and efficient access to InfiniBand hardware in Java as well as epoll based multithreaded connection management. Neutrino supports InfiniBand message passing as well as remote direct memory access, is implemented using the Java Native Interface, and can be used with any Java Virtual Machine. It also provides access to native C structures via a specially developed proxy system, which in turn enables the developer to leverage the InfiniBand hardware’s full functionality. Our experiments show that efficient access to InfiniBand hardware from within a Java Virtual Machine is possible while fully utilizing the available bandwidth.
- Published
- 2020
- Full Text
- View/download PDF
33. Towards the Definition of Patterns and Code Smells for Multi-language Systems
- Author
-
Foutse Khomh and Mouna Abidi
- Subjects
020203 distributed computing ,Source code ,business.industry ,Interface (Java) ,Java Native Interface ,Computer science ,media_common.quotation_subject ,Code smell ,020207 software engineering ,Context (language use) ,Functional requirement ,02 engineering and technology ,Software quality ,Software design pattern ,0202 electrical engineering, electronic engineering, information engineering ,Software engineering ,business ,media_common - Abstract
Developers often combine multiple programming languages to build large-scale applications. They choose programming languages properly for their tasks at hand instead of solving all of their problems with a single language. Foreign Functions Interface allow code written in one programming language to access features available in another programming language. Multi-language systems benefits from several advantages. However, they also introduce challenges related to the development, comprehension, and maintenance of such systems. Software quality is achieved partly by following good practices---architectural styles, design patterns, idioms---and avoiding bad practices---design anti-patterns and code smells. Yet, a review of the literature shows that there are a few works that study developers' practices among multi-language systems. The heterogeneity of components introduces code smells at the source code level. While design patterns are defined as good solutions to a recurrent problem, code smells are defined as poor design and coding choices that can negatively impact the quality of a software program despite satisfying functional requirements. In this paper, we report four patterns and five code smells related to multi-language systems. Those patterns and code smells were extracted from open-source systems, developers' documentation, and bug reports. We encoded these practices in the form of patterns and code smells in the context of Java Native Interface systems.
- Published
- 2020
- Full Text
- View/download PDF
34. Software Development Framework for Real-Time Face Detection and Recognition in Mobile Devices
- Author
-
Zhaopeng Deng, Zhiyuan Wang, Haiqing Liu, Laxmisha Rai, and Amila Rodrigo
- Subjects
Computer Networks and Communications ,Java Native Interface ,Computer science ,Wearable ,authentication, image processing, wearable, framework, jni, opencv, personal identity, smart phones ,Framework ,Gaussian blur ,Wearable computer ,TK5101-6720 ,Facial recognition system ,symbols.namesake ,Smart phones ,Image processing ,Computer vision ,OpenCV ,Android (operating system) ,Face detection ,Authentication ,business.industry ,Software development ,Computer Science Applications ,Personal identity ,Telecommunication ,symbols ,JNI ,Artificial intelligence ,business ,Mobile device - Abstract
With the rapid use of Android OS in mobile devices and related products, face recognition technology is an essential feature, so that mobile devices have a strong personal identity authentication. In this paper, we propose Android based software development framework for real-time face detection and recognition using OpenCV library, which is applicable in several mobile applications. Initially, the Gaussian smoothing and gray-scale transformation algorithm is applied to preprocess the source image. Then, the Haar-like feature matching method is used to describe the characteristics of the operator and obtain the face characteristic value. Finally, the normalization method is used to match the recognition of face database. To achieve the face recognition in the Android platform, JNI (Java Native Interface) is used to call the local Open CV. The proposed system is tested in real-time in two different brands of smart phones, and results average success rate in both devices for face detection and recognition is 95% and 80% respectively.
- Published
- 2020
35. Design and implementation of DeepDSL: A DSL for deep learning
- Author
-
Xiaobing Huang and Tian Zhao
- Subjects
Caffè ,Java ,Computer Networks and Communications ,Computer science ,business.industry ,Java Native Interface ,Programming language ,Scala ,Deep learning ,020207 software engineering ,010103 numerical & computational mathematics ,02 engineering and technology ,computer.software_genre ,01 natural sciences ,Software portability ,Digital subscriber line ,0202 electrical engineering, electronic engineering, information engineering ,Benchmark (computing) ,Artificial intelligence ,0101 mathematics ,business ,computer ,Software ,computer.programming_language - Abstract
Deep Learning (DL) has found great success in well-diversified areas such as machine vision, speech recognition, and multimedia understanding. However, the state-of-the-art tools (e.g. Caffe, TensorFlow, and CNTK), are programming libraries with many dependencies and implemented in languages such as C++ that need to be compiled to a specific runtime environment and require users to install the entire tool libraries for training or inference, which limits the portability of DL applications. In this work, we introduce DeepDSL, a domain specific language (DSL) embedded in Scala, that compiles DL networks encoded with DeepDSL to efficient, compact, and portable Java source programs for DL training and inference. DeepDSL represents DL networks as abstract tensor functions, performs symbolic gradient derivations to generate Intermediate Representation (IR), optimizes the IR expressions, and translates the optimized IR expressions to Java code that runs on GPU without additional dependencies other than the necessary GPU libraries and the related invocation interfaces: a small set of JNI (Java Native Interface) wrappers. Our experiments show DeepDSL outperforms existing tools in several benchmark programs adopted from the current mainstream Deep Neural Networks (DNNs).
- Published
- 2018
- Full Text
- View/download PDF
36. Evaluating the Java Native Interface (JNI)
- Author
-
Stelios Sotiriadis, Nurbek Saparkhojayev, Assem Ayapbergenova, and Oladotun Omosebi
- Subjects
021110 strategic, defence & security studies ,Focus (computing) ,Computer Networks and Communications ,Programming language ,Computer science ,Java Native Interface ,Exception handling ,0211 other engineering and technologies ,010103 numerical & computational mathematics ,02 engineering and technology ,Software_PROGRAMMINGTECHNIQUES ,computer.software_genre ,01 natural sciences ,Hardware and Architecture ,Code (cryptography) ,Software_PROGRAMMINGLANGUAGES ,0101 mathematics ,Java virtual machine ,computer ,Machine code ,Java Programming Language - Abstract
This article aims to explore JNI features and to discover fundamental operations of the Java programming language, such as arrays, objects, classes, threads and exception handling, and to illustrate these by using various algorithms and code samples. The authors also investigate the JNI Invocation API that allows native applications to interact with the Java Virtual Machine (JVM). They focus on attaching native threads to a running JVM and on leveraging existing native code using one-to-one mapping and shared stubs.
- Published
- 2018
- Full Text
- View/download PDF
37. Guía para la configuración de la Interfaz Nativa de Java
- Author
-
Mailyn Moreno-Espino, Yilian Bacallao-Leiva, and Raymel Ramos-Guerra
- Subjects
Software portability ,Java ,Java Native Interface ,Computer science ,Programming language ,Code (cryptography) ,Java virtual machine ,computer.software_genre ,computer ,Microsoft Visual Studio ,Word (computer architecture) ,computer.programming_language ,Eclipse - Abstract
En la actualidad existen diversos lenguajes de programación y es necesario contar con una herramienta que permita la integración entre ellos. Java provee de un framework llamado: interfaz nativa de Java, JNI por sus siglas en inglés; para permitir que se puedan escribir programas en otros lenguajes diferentes a Java y mantener la portabilidad entre todas las plataformas. Permite que el código que se ejecuta en la máquina virtual de Java pueda interactuar con aplicaciones y bibliotecas escritas en otros lenguajes, como C, C++ y ensamblador. Esta guía se basa en un ejemplo básico de una aplicación “Hello Word”, la cual servirá para de manera sencilla, mostrar los pasos a seguir para la configuración de JNI en los entornos de desarrollo involucrados, que para esta guía se utilizó, para Java: Eclipse y para C++: Visual Studio 2010.
- Published
- 2018
- Full Text
- View/download PDF
38. TZMon: Improving mobile game security with ARM trustzone
- Author
-
Huy Kang Kim and Sanghoon Jeon
- Subjects
General Computer Science ,Computer science ,Java Native Interface ,ComputingMilieux_PERSONALCOMPUTING ,Security policy ,Computer security ,computer.software_genre ,Information hiding ,Synchronization (computer science) ,Timer ,Android (operating system) ,Law ,Protocol (object-oriented programming) ,computer ,Protection mechanism - Abstract
As the game industry is moving from PC to smartphone platforms, security problems related to mobile games are becoming critical. Considering the characteristics of mobile games such as having short life-cycles and high communication costs, the server/network-side security technologies designed for PC games are not appropriate for mobile games. In this study, we propose TZMon, a client-side game protection mechanism based on the ARM TrustZone, which protects the confidentiality and integrity of mobile games. TZMon is composed of application integrity protocol, secure update protocol, data hiding protocol, and timer synchronization protocol. To adequately safeguard game codes and data, TZMon is designed considering an environment of frequent communications with the game server, a stand-alone operation environment, and an unreliable environment using a rooted OS. Furthermore, flexibility is provided to game application developers who apply security policies by using the Java Native Interface (JNI). In this study, we use Android and the Open Portable Trusted Execution Environment (OPTEE) as the OS platforms for Normal World and Secure World, respectively. After implementing a full-featured prototype of TZMon, we apply it to several open-source mobile games. We prove through the experiments that the application of the proposed TZMon does not cause any noticeable performance degradation and can detect major cheating techniques of mobile games.
- Published
- 2021
- Full Text
- View/download PDF
39. Bringing Java's Wild Native World under Control.
- Author
-
MENGTAO SUN, GANG TAN, SIEFERS, JOSEPH, BIN ZENG, and MORRISETT, GREG
- Subjects
JAVA programming language ,COMPUTER performance ,APPLICATION software ,C++ ,DATA security ,VIRTUAL machine systems ,DEBUGGING - Abstract
For performance and for incorporating legacy libraries, many Java applications contain native-code components written in unsafe languages such as C and C++. Native-code components interoperate with Java components through the Java Native Interface (JNI). As native code is not regulated by Java's security model, it poses serious security threats to the managed Java world. We introduce a security framework that extends Java's security model and brings native code under control. Leveraging software-based fault isolation, the framework puts native code in a separate sandbox and allows the interaction between the native world and the Java world only through a carefully designed pathway. Two different implementations were built. In one implementation, the security framework is integrated into a Java Virtual Machine (JVM). In the second implementation, the framework is built outside of the JVM and takes advantage of JVM-independent interfaces. The second implementation provides JVM portability, at the expense of some performance degradation. Evaluation of our framework demonstrates that it incurs modest runtime overhead while significantly enhancing the security of Java applications. [ABSTRACT FROM AUTHOR]
- Published
- 2013
- Full Text
- View/download PDF
40. A web-based distributed problem-solving environment for engineering applications
- Author
-
Cheng, Hsien-Chie and Fen, Chiu-Shia
- Subjects
- *
COMPUTER-aided engineering , *COMMUNICATION & technology , *JAVA programming language , *PROGRAMMING languages - Abstract
Abstract: In this study, a prototype of web-based distributed problem-solving environment (W-DPSE) is presented to facilitate computer aided engineering (CAE) technologies. This system provides an effective approach to distributed modeling and simulation, and in addition, to support networked collaboration such that scientists around the world could interactively, visually and experimentally explore their daily design work through the proposed system. The W-DPSE system is constructed as a three-tiered architecture, consisting of three major layers: a web client presentation interface (WCPI), computing solver servers (CSS), and a system management server (SMS). All the components within this architecture are implemented with an object-oriented approach—Java while transparent communication across these three layers is attained through the remote method invocation (RMI) technology. To generalize the applicability of the system so as to accommodate interdisciplinary and diversified applications, a novel and efficient interface is developed for wrapping legacy computation codes, including C and FORTRAN etc., as a Java component. Note that in the interface, the communication mechanisms between Java objects and legacy codes are implemented by way of java native interface (JNI) and Unix inter-process communication (IPC) provided by OS. At last, the applicability of the W-DPSE system is extensively confirmed through the practices of two engineering applications: topology optimization of structures and pollutant transport simulations of coastal waters. [Copyright &y& Elsevier]
- Published
- 2006
- Full Text
- View/download PDF
41. inAspect: interfacing Java and VSIPL applications.
- Author
-
Alford, Torey, Shah, Vijay P., Skjellum, Anthony, Younan, Nicholas H., and Taylor, Clayborne D.
- Subjects
SIGNAL processing ,JAVA programming language ,COMPUTER interfaces ,IMAGE processing ,ALGORITHMS - Abstract
In this paper, we discuss the origin, design, performance, and directions of the inAspect high-performance signal- and image-processing package for Java. The Vector Signal and Image Processing Library (VSIPL) community provides a standardized application programmer interface (API) for high-performance signal and image processing plus linear algebra with a C emphasis and object-based design framework. Java programmers need high-performance and/or portable APIs for this broad base of functionality as well. inAspect addresses PDAs, embedded Java boards, workstations, and servers, with emphasis on embedded systems at present. Efforts include supporting integer precisions and utilizing coordinate rotation digital computer (CORDIC) algorithms—both aimed at added relevance for limited-performance environments, such as present-day PDAs. Copyright © 2005 John Wiley & Sons, Ltd. [ABSTRACT FROM AUTHOR]
- Published
- 2005
- Full Text
- View/download PDF
42. PILDroid: A System for Detecting the Leakage of Privacy Information using the JNI
- Author
-
Jinseob Kim, Gyun Woo, Yeoneo Kim, Junseok Cheon, and Xiao Liu
- Subjects
Assembly language ,Computer science ,Java Native Interface ,business.industry ,Smart device ,Static analysis ,computer.software_genre ,law.invention ,Taint checking ,law ,Embedded system ,Malware ,Android (operating system) ,business ,computer ,computer.programming_language ,Test data - Abstract
We live in a period of explosive growth of smart device applications. Specifically, the growth rate of Android applications is amazing. And these Android applications often use JNI (Java native interface). However, research on the leakage of private information using JNI is lacking. In this paper, we propose a system for detecting the leakage of private information using JNI. Our system named PILDroid adopts tainted analysis based on static method. PILDroid can perform the analysis more easily and effectively than the assembly-based analysis systems because it decompiles a JNI into LLVM IR instead of assembly language. And this paper demonstrates an experiment to verify the precision and performance. For the test data, we selected five Android applications: three of which are well known malware, two of which are malware made by us. And experiment results, PILDroid determined that there has a leak of privacy information flow from five malware.
- Published
- 2019
- Full Text
- View/download PDF
43. A heuristic fuzz test generator for Java native interface
- Author
-
Xiaohui Kuang, Yan Wen, Ling Pang, Dongxia Wang, Jinjing Zhao, and Xiang Li
- Subjects
Branch predication ,Generator (computer programming) ,Java ,Computer science ,Java Native Interface ,Heuristic (computer science) ,Programming language ,Fuzz testing ,computer.software_genre ,Machine code ,computer ,computer.programming_language ,Vulnerability (computing) - Abstract
It is well known that once a Java application uses native C/C++ methods through the Java Native Interface (JNI), any security guarantees provided by Java might be invalidated by the native methods. So any vulnerability in this trusted native code can compromise the security of the Java program. Fuzzing test is an approach to software testing whereby the system being tested is bombarded with inputs generated by another program. When using fuzzer to test JNI programs, how to accurately reach the JNI functions and run through them to find the sensitive system APIs is the pre-condition of the test. In this paper, we present a heuristic fuzz generator method on JNI vulnerability detection based on the branch predication information of program. The result in the experiment shows our method can use less fuzzing times to reach more sensitive windows APIs in Java native code.
- Published
- 2019
- Full Text
- View/download PDF
44. JNI program analysis with automatically extracted C semantic summary
- Author
-
Sungho Lee
- Subjects
021110 strategic, defence & security studies ,Java ,Java Native Interface ,Programming language ,Computer science ,0211 other engineering and technologies ,020206 networking & telecommunications ,02 engineering and technology ,Reuse ,Call graph ,computer.software_genre ,Oracle ,Interoperation ,Program analysis ,0202 electrical engineering, electronic engineering, information engineering ,Android (operating system) ,computer ,computer.programming_language - Abstract
From Oracle JVM to Android Runtime, most Java runtime environments officially support Java Native Interface (JNI) for interaction between Java and C. Using JNI, developers can improve Java program performance or reuse existing libraries implemented in C. At the same time, differences between the languages can lead to various kinds of unexpected bugs when developers do not understand the differences or comprehensive interoperation semantics completely. Furthermore, existing program analysis techniques do not cover the interoperation, which can reduce the quality of JNI programs. We propose a JNI program analysis technique that analyzes Java and C code of JNI programs using analyzers targeting each language respectively. The C analyzer generates a semantic summary for each C function callable from Java and the Java analyzer constructs call graphs using the semantic summaries and Java code. In addition to the call graph construction, we extend the analysis technique to detect four bug types that can occur in the interoperation between the languages. We believe that our approach would be able to detect genuine bugs as well as improve the quality of JNI programs.
- Published
- 2019
- Full Text
- View/download PDF
45. Automation of Memory Leak Detection and Correction on Android JNI (poster)
- Author
-
Sumin Ahn
- Subjects
Dynamic random-access memory ,Java ,business.industry ,Java Native Interface ,Computer science ,Memory leak detection ,020207 software engineering ,02 engineering and technology ,computer.software_genre ,Automation ,law.invention ,Memory leak ,Virtual machine ,law ,020204 information systems ,0202 electrical engineering, electronic engineering, information engineering ,Operating system ,Android (operating system) ,business ,computer ,computer.programming_language - Abstract
As many people use smartphones, many Android applications are being developed and distributed. They are usually written in Java, including C legacy libraries through Java native interface (JNI). To execute these applications written in Java, a virtual machine (VM) is required. For Android, Google's own Dalvic VM had been used, and recently Android Runtime (ART) is being used.
- Published
- 2019
- Full Text
- View/download PDF
46. Adaptable I/O System based I/O Reduction for Improving the Performance of HDFS
- Author
-
Jung Kyu Park, Sungmin Koo, Jaeho Kim, and Seungjae Baek
- Subjects
Reduction (complexity) ,Java Native Interface ,business.industry ,Semantics (computer science) ,Computer science ,Computer data storage ,Operating system ,Electrical and Electronic Engineering ,business ,computer.software_genre ,computer ,Computer hardware ,Electronic, Optical and Magnetic Materials - Abstract
In this paper, we propose a new HDFS-AIO framework to enhance HDFS with Adaptive I/O System (ADIOS), which supports many different I/O methods and enables applications to select optimal I/O routines for a particular platform without source-code modification and re-compilation. First, we customize ADIOS into a chunk-based storage system so its API semantics can fit the requirement of HDFS easily; then, we utilize Java Native Interface (JNI) to bridge HDFS and the tailored ADIOS. We use different I/O patterns to compare HDFS-AIO and the original HDFS, and the experimental results show the design feasibility and benefits. We also examine the performance of HDFS-AIO using various I/O techniques. There have been many studies that use ADIOS, however our research is expected to help in expanding the function of HDFS.
- Published
- 2016
- Full Text
- View/download PDF
47. JN-SAF
- Author
-
Ting Chen, Fengguo Wei, Xinming Ou, Xiaosong Zhang, and Xingwei Lin
- Subjects
Binary analysis ,Dataflow ,Java Native Interface ,Computer science ,Programming language ,020207 software engineering ,Static program analysis ,02 engineering and technology ,Static analysis ,computer.software_genre ,Vetting ,020204 information systems ,0202 electrical engineering, electronic engineering, information engineering ,Android (operating system) ,Machine code ,computer - Abstract
Android allows application developers to use native language (C/C++) to implement a part or the complete program. Recent research and our own statistics show that native payloads are commonly used in both benign and malicious apps. Current state-of-the-art Android static analysis tools, such as Amandroid, FlowDroid, DroidSafe, IccTA, and CHEX avoid handling native method invocation and apply conservative models for their data-flow behavior. None of those tools have capability to capture the inter-language dataflow. We propose a new approach to conduct inter-language dataflow analysis for security vetting of Android apps, and build an analysis framework, called JN-SAF to compute flow and context-sensitive inter-language points-to information in an efficient way. We show that: 1) Precise and efficient inter-language dataflow analysis is completely feasible with support of a summary-based bottom-up dataflow analysis (SBDA) algorithm, 2) A comprehensive model of Java Native Interface (JNI) and Native Development Kit (NDK) for binary analysis is essential as none of the existing binary analysis frameworks is able to handle Android binaries, 3) JN-SAF is capable of capturing inter-language security issues in real-world Android apps as demonstrated by our evaluation result.
- Published
- 2018
- Full Text
- View/download PDF
48. DESIGN AND IMPLEMENTATION OF AUDIO/VIDEO CODEC BASED ON ANDROID PLATFORM
- Author
-
M.Madan Gopal, Mohammed Sadiq, and Muneeb Ahmed Qureshi
- Subjects
Open source ,Computer science ,business.industry ,Java Native Interface ,Embedded system ,Operating system ,Kernel level ,Codec ,Android (operating system) ,business ,computer.software_genre ,Boom ,computer - Abstract
The Open Source Environment and API's Android not only created a boom in the market but also attracted large number of people to turn in to application developers. Android not only changed the technology but also help people how to get better with the means of technology This paper mainly showcase kernel level development with the help of java native interface technology; and FFmpeg (open source codec project) tool and associated libraries and at the end android based codec application is designed and implemented with the help of c/c++ and other languages Keywords—Android; Application development; Audio/Video Codec; JNI; Ffmpeg.
- Published
- 2015
- Full Text
- View/download PDF
49. SPICE TOOLS SUPPORTING PLANETARY REMOTE SENSING
- Author
-
N. Bachman, E. Wright, C. H. Acton, and B. Semenov
- Subjects
lcsh:Applied optics. Photonics ,010504 meteorology & atmospheric sciences ,lcsh:T ,business.industry ,Java Native Interface ,Fortran ,Interface (Java) ,Computer science ,Spice ,lcsh:TA1501-1820 ,lcsh:Technology ,01 natural sciences ,Planetary Data System ,Data visualization ,Software ,Planetary science ,lcsh:TA1-2040 ,0103 physical sciences ,lcsh:Engineering (General). Civil engineering (General) ,business ,010303 astronomy & astrophysics ,computer ,0105 earth and related environmental sciences ,computer.programming_language ,Remote sensing - Abstract
NASA's "SPICE"* ancillary information system has gradually become the de facto international standard for providing scientists the fundamental observation geometry needed to perform photogrammetry, map making and other kinds of planetary science data analysis. SPICE provides position and orientation ephemerides of both the robotic spacecraft and the target body; target body size and shape data; instrument mounting alignment and field-of-view geometry; reference frame specifications; and underlying time system conversions. SPICE comprises not only data, but also a large suite of software, known as the SPICE Toolkit, used to access those data and subsequently compute derived quantities–items such as instrument viewing latitude/longitude, lighting angles, altitude, etc. In existence since the days of the Magellan mission to Venus, the SPICE system has continuously grown to better meet the needs of scientists and engineers. For example, originally the SPICE Toolkit was offered only in Fortran 77, but is now available in C, IDL, MATLAB, and Java Native Interface. SPICE calculations were originally available only using APIs (subroutines), but can now be executed using a client-server interface to a geometry engine. Originally SPICE "products" were only available in numeric form, but now SPICE data visualization is also available. The SPICE components are free of cost, license and export restrictions. Substantial tutorials and programming lessons help new users learn to employ SPICE calculations in their own programs. The SPICE system is implemented and maintained by the Navigation and Ancillary Information Facility (NAIF)–a component of NASA's Planetary Data System (PDS). * Spacecraft, Planet, Instrument, Camera-matrix, Events
- Published
- 2016
- Full Text
- View/download PDF
50. Comparing Android Runtime with native : Fast Fourier Transform on Android
- Author
-
Danielsson, André and Danielsson, André
- Abstract
This thesis investigates the performance differences between Java code compiled by Android Runtime and C++ code compiled by Clang on Android. For testing the differences, the Fast Fourier Transform (FFT) algorithm was chosen to demonstrate examples of when it is relevant to have high performance computing on a mobile device. Different aspects that could affect the execution time of a program were examined. One test measured the overhead related to the Java Native Interface (JNI). The results showed that the overhead was insignificant for FFT sizes larger than 64. Another test compared matching implementations of FFTs between Java and native code. The conclusion drawn from this test was that, of the converted algorithms, Columbia Iterative FFT performed the best in both Java and C++. A third test, evaluating the performance of vectorization, proved to be an efficient option for native optimization. Finally, tests examining the effect of using single-point precision (float) versus double-point precision (double) data types were covered. Choosing float could improve performance by using the cache in an efficient manner., I denna studie undersöktes prestandaskillnader mellan Java-kod kompilerad av Android Runtime och C++-kod kompilerad av Clang på Android. En snabb Fourier Transform (FFT) användes under experimenten för att visa vilka användningsområden som kräver hög prestanda på en mobil enhet. Olika påverkande aspekter vid användningen av en FFT undersöktes. Ett test undersökte hur mycket påverkan Java Native Interface (JNI) hade på ett program i helhet. Resultaten från dessa tester visade att påverkan inte var signifikant för FFT-storlekar större än 64. Ett annat test undersökte prestandaskillnader mellan FFT-algoritmer översatta från Java till C++. Slutsatsen kring dessa tester var att av de översatta algoritmerna var Columbia Iterative FFT den som presterade bäst, både i Java och i C++. Vektorisering visade sig vara en effektiv optimeringsteknik för arkitekturspecifik kod skriven i C++. Slutligen utfördes tester som undersökte prestandaskillnader mellan flyttalsprecision för datatyperna float och double. float kunde förbättra prestandan genom att på ett effektivt sätt utnyttja processorns cache.
- Published
- 2017
Catalog
Discovery Service for Jio Institute Digital Library
For full access to our library's resources, please sign in.