How to write your own annotation processor in Android Studio. Compile time and runtime annotations will be compared to reflection. To conclude, butterknife library will be presented as an example of using compile time annotation processing.
ActiveAndroid is lightweight ORM library for Android, which we use in few of our projects. I'll demonstrate how to setup the library, and conclude with few examples of its usage.
No Container: a Modern Java Stack with BootiqueAndrus Adamchik
Java containers appeared back in the era of big expensive hardware and monolithic applications, and currently feel like an impediment to Java progress. More and more developers opt out of containers in favor of runnable jars, especially with the advance of microservices architectures. Andrus Adamchik will present a new open source tool called Bootique (https://bootique.io), a pluggable and extensible technology intended for various kinds of container-less Java apps – REST services, webapps, job runners, desktop apps and what not.
DBFlow is ORM library for Android which strives to solve all of our problems with database management. I'll showcase few of its advanced features, and conclude with few examples of its usage.
ActiveAndroid is lightweight ORM library for Android, which we use in few of our projects. I'll demonstrate how to setup the library, and conclude with few examples of its usage.
No Container: a Modern Java Stack with BootiqueAndrus Adamchik
Java containers appeared back in the era of big expensive hardware and monolithic applications, and currently feel like an impediment to Java progress. More and more developers opt out of containers in favor of runnable jars, especially with the advance of microservices architectures. Andrus Adamchik will present a new open source tool called Bootique (https://bootique.io), a pluggable and extensible technology intended for various kinds of container-less Java apps – REST services, webapps, job runners, desktop apps and what not.
DBFlow is ORM library for Android which strives to solve all of our problems with database management. I'll showcase few of its advanced features, and conclude with few examples of its usage.
Design patterns are not only cool but represent the collective wisdom of many developers. Since the publication of Design Patterns: Elements of Reusable Object-Oriented Software by GoF many new concepts have extended the coverage of these design patterns, and now Java EE provide out of the box implementations of many of the most well known patterns. This talk will show how, by taking advantage of Java EE features such as CDI and the smart use of annotations, traditional design patterns can be implemented in a much cleaner and quicker way. Among the design patterns discuss there will be Singleton, Façade, Observer, Factory, Dependency Injection, Decorator and more.
Mobile Fest 2018. Алексей Лизенко. Make your project great againMobileFest2018
Можно ли улучшить пользовательский опыт и удобство разработки всего лишь оптимизацией Xcode проекта? Рассмотрим методики уменьшения времени запуска приложения и улучшения отзывчивости Xcode (довольно таки) малой кровью.
Decompiling Android apps
Ever dreamed of reverse engineering an application? We'll show you how to decompile Android apps and quickly overview the tools required in the process. We'll also demonstrate what Proguard does to protect your code.
Zen and the Art of REST API documentation - MuCon London 2015Steve Judd
Struggling to document your APIs? Still using a wiki page to do it? Watch this presentation and learn the secrets of documenting REST APIs!
One of the secrets to a successful Microservices application is the quality of its APIs - so using a decent tool to help develop them is essential; without the right tool, producing APIs can become as tedious as reading through a dump file. This presentation introduces a selection of opensource tools intended to help with not just documenting APIs but designing and testing them as well. Tools covered will include: Swagger, RAML, Spring RestDocs and Apiary.
Have you ever cried yourself to sleep unable to find the cause of a horrendous bug in your node app? Cry no more, your tears will be reshaped into blinding swords as we explore uncharted territories laced with mystical creatures.
JavaScript debugging is an often avoided topic due to the uncertainty of how best to accomplish it and the lack of powerful introspective tools. This talk will explore new territory and showcase tools that help you debug complex and difficult issues in your node or frontend app. Libraries and tools such as node-inspector, Time-Travel Debugging, Visual Studio Code, vorlon.js, Vantage and memory leak catchers will be used to slay dragons.
No more shall you fear building complex apps with JavaScript!
@MarketaAdamova Slides from 'Road Trip To Component' talk (Dutch Clojure Days 2017)
'Few months ago our company NomNom decided to move all its backend services from Ruby to Clojure. And I think a road trip is best comparison for this migration. There was excitement at start, then panic a few hours down the road wondering what was left behind, but now a constant joy of discovering new things. In this talk I’d like to share how we eventually arrived at Stuart Sierra’s Component. Let’s take a look at how components improved our quickly growing codebase and testing, as well as some of the trade-offs we had to make. Finally I’ll show how components can help with managing running code in production.'
JDK stand for java development kit.
JVM stands for Java Virtual Machine.
JRE is the responsible unit to run the java program.
JIT stands for Just In Time compiler.
This 30 minute talk will aim to cover the basics of lucene internals. This would help you make better choices of the configuration options which are exposed via the solrconfig file in Solr.
Design patterns are not only cool but represent the collective wisdom of many developers. Since the publication of Design Patterns: Elements of Reusable Object-Oriented Software by GoF many new concepts have extended the coverage of these design patterns, and now Java EE provide out of the box implementations of many of the most well known patterns. This talk will show how, by taking advantage of Java EE features such as CDI and the smart use of annotations, traditional design patterns can be implemented in a much cleaner and quicker way. Among the design patterns discuss there will be Singleton, Façade, Observer, Factory, Dependency Injection, Decorator and more.
Mobile Fest 2018. Алексей Лизенко. Make your project great againMobileFest2018
Можно ли улучшить пользовательский опыт и удобство разработки всего лишь оптимизацией Xcode проекта? Рассмотрим методики уменьшения времени запуска приложения и улучшения отзывчивости Xcode (довольно таки) малой кровью.
Decompiling Android apps
Ever dreamed of reverse engineering an application? We'll show you how to decompile Android apps and quickly overview the tools required in the process. We'll also demonstrate what Proguard does to protect your code.
Zen and the Art of REST API documentation - MuCon London 2015Steve Judd
Struggling to document your APIs? Still using a wiki page to do it? Watch this presentation and learn the secrets of documenting REST APIs!
One of the secrets to a successful Microservices application is the quality of its APIs - so using a decent tool to help develop them is essential; without the right tool, producing APIs can become as tedious as reading through a dump file. This presentation introduces a selection of opensource tools intended to help with not just documenting APIs but designing and testing them as well. Tools covered will include: Swagger, RAML, Spring RestDocs and Apiary.
Have you ever cried yourself to sleep unable to find the cause of a horrendous bug in your node app? Cry no more, your tears will be reshaped into blinding swords as we explore uncharted territories laced with mystical creatures.
JavaScript debugging is an often avoided topic due to the uncertainty of how best to accomplish it and the lack of powerful introspective tools. This talk will explore new territory and showcase tools that help you debug complex and difficult issues in your node or frontend app. Libraries and tools such as node-inspector, Time-Travel Debugging, Visual Studio Code, vorlon.js, Vantage and memory leak catchers will be used to slay dragons.
No more shall you fear building complex apps with JavaScript!
@MarketaAdamova Slides from 'Road Trip To Component' talk (Dutch Clojure Days 2017)
'Few months ago our company NomNom decided to move all its backend services from Ruby to Clojure. And I think a road trip is best comparison for this migration. There was excitement at start, then panic a few hours down the road wondering what was left behind, but now a constant joy of discovering new things. In this talk I’d like to share how we eventually arrived at Stuart Sierra’s Component. Let’s take a look at how components improved our quickly growing codebase and testing, as well as some of the trade-offs we had to make. Finally I’ll show how components can help with managing running code in production.'
JDK stand for java development kit.
JVM stands for Java Virtual Machine.
JRE is the responsible unit to run the java program.
JIT stands for Just In Time compiler.
This 30 minute talk will aim to cover the basics of lucene internals. This would help you make better choices of the configuration options which are exposed via the solrconfig file in Solr.
Practices and tools for building better API (JFall 2013)Peter Hendriks
Een belangrijke voorwaarde om goede en leesbare Java code te schrijven is om gebruik te maken van een goede API. Een goede API helpt ontwikkelaars om sneller hoogwaardige code te schrijven. Het ontwerp van een API is daarom belangrijk, zeker als er grotere systemen worden gerealiseerd in teamverband. Moderne ontwikkeltools als Eclipse, IntelliJ IDEA en FindBugs helpen met het schrijven van goede API, en het detecteren van slecht gebruik. Deze sessie gaat in op de laatste ontwikkelingen en mogelijkheden, inclusief nieuwe taalmogelijkheden in Java 8. Er wordt hierbij gebruik gemaakt van praktische situaties en concrete codevoorbeelden, gebaseerd op echte ervaringen in grote codebases. Met praktische tips en toegankelijke tools kan al een grote stap gemaakt worden om in de praktijk beter met API ontwerp om te gaan!
Practices and Tools for Building Better APIsPeter Hendriks
The most important part of well-designed Java code is a nice API. A good API helps developers be more productive and write high-quality code quickly. API design matters for any developer, especially in building larger systems with a team. Modern coding tools such as Eclipse and FindBugs contain advanced tooling to help with designing an API and checking for bad usage. This session demonstrates the latest innovations, including new capabilities in Java 8, by presenting realistic examples based on real experiences in large codebases. They show that just a few Java tricks and simple annotations can make all the difference for building a great API.
There are many benefits and some detriments to building your own JavaScript framework. With so many frameworks available do you need to build one at all? What kind of API should you provide? And how do you ensure quality as your codebase grows? This talk covers answers to these questions and more in order to provide a solid starting point for you to create a successful JS framework.
Gwt and JSR 269's Pluggable Annotation Processing APIArnaud Tournier
Slides for my presentation given during the GWTCon 2015 conference in Firenze about generating (boiler plate) code with the JSR 269 inside a GWT Project. This JSR can of course also be used in pure Java projects.
The Cordova framework
Recurrent app architecture
Cordova CLI
Debugging Cordova applications
My development environment
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2015.
http://www.ivanomalavolta.com
AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your template language and lets you extend HTML's syntax to express your application's components clearly and succinctly. AngularJS's data binding and dependency injection eliminate much of the code you would otherwise have to write. And it all happens within the browser, making it an ideal partner with any server technology.
JavaOne 2014 - CON2013 - Code Generation in the Java Compiler: Annotation Pro...Jorge Hidalgo
Slides from JavaOne 2014 conference session CON2013
The Java compiler and annotation processors are powerful tools within the Java platform, and both, combined, unleash great power in developers’ hands, as this session illustrates. Triggered during the Java compilation process, APs can be used to generate new sources and configuration from metadata present in the class source. Why expend time creating a BeanInfo class or dealing with boring XML configuration files when you can have them easily created at compilation time? Moreover, APs are compatible with IDEs and build tools, and hence they are virtually everywhere your Java code is. Unleash the power of annotation processors, and let them do the hard work for you
The Cordova framework
Recurrent app architecture
Cordova CLI
Debugging Cordova applications
My development environment
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2016.
http://www.ivanomalavolta.com
The Cordova framework
Recurrent app architecture
Cordova CLI
Debugging Cordova applications
My development environment
Cordova APIs
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2014.
http://www.ivanomalavolta.com
Topics of this presentation:
- Basics and best practices of developing single-page applications (SPA) and Web API Services on Microsoft .NET -
- Core with Docker and Linux.
- PowerShell Core automated builds.
- Markdown/PDF documentation.
- Documentation of public interfaces with Swagger/OAS/YAML.
- Automated testing of SPA on Protractor and testing the Web API on Postman/Newman.
This presentation by Sergii Fradkov (Consultant, Engineering), Andrii Zarharov (Lead Software Engineer, Consultant), Igor Magdich (Lead Test Engineer, Consultant) was delivered at GlobalLogic Kharkiv .NET TechTalk #1 on May 24, 2019.
A User Interface for adding Machine Learning tools into GitHubRumyana Rumenova
A web application through which programmers can quickly familiarise themselves with a project on GitHub by browsing the files in it and looking through an automatically summarised version of its source code. Dissertation project at the University of Edinburgh.
Similar to Infinum Android Talks #02 - How to write an annotation processor in Android (20)
Infinum Android Talks #20 - Making your Android apps fast like Blue Runner an...Infinum
There always comes a point in an Android developer’s life when an application stops running perfectly and stutters a bit. Or uses too much memory. Or even hangs! In this talk, we'll take a look at all the tools that can help you figure out what makes your application cough, stutter and eat too much memory.
We're taking a closer look into a new utility class from Android Support Library. It enables you to calculate the difference between two lists and output a list of update operations swiftly and with style. Presented by Željko Plesac from Infinum.
Infinum Android Talks #20 - Benefits of using KotlinInfinum
After this talk, using plain old Java for Android development will no longer be good enough for you. You have been warned. Presented by Dino Kovač from Infinum.
Infinum iOS Talks #4 - Making your Swift networking code more awesome with Re...Infinum
Advantages of using Result<value,> values (similar to Swift’s native Optional type) in your networking code. Learn how Result helps you handle errors better and takes advantage of functional patterns.
Infinum Android Talks #13 - Using ViewDragHelperInfinum
You probably haven't heard about ViewDragHelper class but if you want to drag things around your screen you will need it. In this lecture we will show you how and why you should use it.
Log4j is a logging library developed by Apache. It makes logging simple and effective. In this lecture we will show you the setup process and some of its main features.
Infinum Android Talks #9 - Making your app location-awareInfinum
AwareWhen app requires knowledge about user location and places around him you don't want to struggle with details of the underlying location technology. In this talk, you will learn how to make your life easier with the new Fused Location Provider API.
Gradle is great for creating automated build tasks. We will explain why and how to code your own gradle plugins and make your build code reusable across projects.
Infinum Android Talks #14 - Facebook for Android APIInfinum
Facebook is the world's largest open access repository of user data. We'll show you have to connect Android applications with Facebook and use its rich API to enhance user experience.
Infinum Android Talks #18 - Create fun lists by Ivan MarićInfinum
Creating list screens got amazing with the release of the RecyclerView widget. Of course, this also means more work. Ivan will show you some tips and tricks on how to add animations on list items and make them more pleasing to the eye and fun for the user.
Infinum Android Talks #18 - In-app billing by Ivan MarićInfinum
You’re experienced in building Android apps but have trouble with the conversion rate? Ivan will talk about the monetization models Google Play offers and demonstrate how to use them in your apps.
Infinum iOS Talks #2 - VIPER for everybody by Damjan VujaklijaInfinum
We'll do a short overview of VIPER and then we'll cover our customized version of VIPER. We will discuss our project and module generator tools, numerous tips and tweaks which will make VIPER more accessible and easier to use without sacrificing its main features.
Infinum Android Talks #17 - Testing your Android applications by Ivan KustInfinum
van will show you how to setup unit tests using Robolectric, how to test user interactions using Espresso and provide some tips and tricks for stress-free testing.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
3. Let’s look at our options
Generics Reflection Annotations
Speed Fast Slow
Fast (if using
compile time)
Ease of use Easy Medium Advanced
“Freedom" - generic types
- modify everything
at run-time
- generate code
during compile
4. • use generics for type agnostic structures when
possible (e.g. lists) - it’s easy and fast
• when that isn’t enough, use annotation processing -
generate code that is boring to write
• generated code isn’t “visible” - use reflection to access
it at run time from the code that you write
Approach
5. Let’s get our hands dirty
• actually only the keyboard gets dirty over time
• prerequisites:
- Android Studio (tested on version 0.4.0)
- enable annotation processing
(Open preference and navigate to Compiler → Annotation Processors.
Check "Enable annotation processing”)
- apt plugin https://bitbucket.org/hvisser/android-apt
• what is an annotation processor made of?
- definition of annotations using @interface
- a class that extends AbstractProcessor
- entry containing processor name in
META-INF/services/javax.annotation.processing.Processor
6. Project structure
• API project
- annotation definitions
- other non-generated code
• Compiler project
- annotation processor implementation
- annotation definitions (from API project) on
classpath
• Application project
- android application project
- references to API and Compiler projects
8. Compiler project
• standard java library project
- this is required in order to see APT classes
• API project sources must be in classpath (build.gradle):
9. Compiler project
• AbstractProcessor implementation
- override process(…) method
- return true if processing was successfull
- add following annotations to processor class:
@SupportedAnnotationTypes(“your.package.AnnotationName”)
@SupportedSourceVersion(SourceVersion.RELEASE_7)
• create file:
src/main/resources/META-INF/services/javax.annotation.processing.Processor
• add fully qualified class name of your processor class to the
file (e.g. co.infinum.annotations.processor.TestProcessor)