Azure Java SDK - How/ Which one to use? - maven

I am very confused about using Azure Java SDK.
Firstly, I found and started using https://mvnrepository.com/artifact/com.microsoft.azure/azure version 1.31.1.
I have been using this for a while but today my CI software failed to build my project:
Failed to collect dependencies at com.microsoft.azure:azure:jar:1.31.1 -> com.microsoft.azure:azure-client-authentication:jar:1.7.0 -> com.microsoft.azure:adal4j:jar:1.6.4 -> com.nimbusds:oauth2-oidc-sdk:jar:6.5 -> net.minidev:json-smart:jar:2.3-SNAPSHOT: Failed to read artifact descriptor for net.minidev:json-smart:jar:2.3-SNAPSHOT: Could not find artifact net.minidev:minidev-parent:pom:2.3-20170326.024654-2 in jfrog (http://url/maven-public) -> [Help 1]
Now, I can't find net.minidev:minidev-parent:pom:2.3-20170326.024654-2 anywhere, and why would thesdk have a SNAPSHOT dependency?
Then I followed https://azure.github.io/azure-sdk/releases/2020-03/java.html and saw a whole lot of different libraries.
What's the deal with Azure SDK for Java? How should I actually use it?

This is well explained in its Github page
1. Management Libraries
Libraries which enable you to provision specific resources. They are responsible for directly mirroring and consuming Azure service's REST endpoints. Management library directories contain -mgmt-, e.g. azure-mgmt-keyvault.
2. Client: GA March 2020 Releases
New wave of packages that were released in March 2020 client library as General Availability (GA) and several others that were released in beta. These libraries follow the Azure SDK Design Guidelines for Java and share a number of core features such as HTTP retries, logging, transport protocols, authentication protocols, etc, so that once you learn how to use these features in one client library, you will know how to use them in other client libraries. You can learn about these shared features here.
These libraries can be easily identified by sdk/ folder, package, and namespaces names starting with azure-, e.g. azure-keyvault.
3. Client: Previous Versions
Last stable versions of packages that have been provided for usage with Azure and are production-ready. These libraries provide similar functionalities to the preview libraries, as they allow you to use and consume existing resources and interact with them, for example: upload a blob. Stable library directories start with microsoft-azure-, e.g. microsoft-azure-keyvault. They might not implement the guidelines or have the same feature set as the GA releases. They do however offer wider coverage of services.
Suggestion
If you want to manage Azure resources, use Management Libraries which contain -mgmt-.
If you want to utilize Azure resources, use the new-version GA Client Libraries for new features and better support. The most official documentation has turned to use new GA version now.

Related

how to build and run the light-portal from light-4j platform

I am a developer from who wants to create an ecosystem around micro services. My research led to your software projects, which are outstanding in many respects.
Unfortunately, one of the components I couldn't get running for an initial review was the portal.
The build failed due to a missing light-4j version (1.5.29).
The light-4j master branch is at 1.5.23, hence I checked out the portal at a version that meets the light-4j version. With this the docker-compose-hybrid.yml script failed, due to other missing libraries. Considering the fact that I even reverted to an older version of the portal sources, I am almost sure that I am on the wrong track.
Do you have any advice for me how to get this solved?
Thank you in advance.
Thanks a lot for your interest in the light platform. The light-portal is still in heavy development in develop branch which is depending on the develop branch of light-4 and other libraries. The easiest way to build it is through light-bot which is our own DevOps tool for microservices as you can see you are dealing with too many dependencies and most DevOps tools on the market can only deal with one repository each time.
https://github.com/networknt/light-config-test/tree/master/light-bot/develop-build/build-portal
Also, please be aware that light-portal services are built on top of light-hybrid which is a serverless framework. The build process just creates small jar files and copy to the read and write service folders. You need to start a compose to start the two services to load all the services.
The following the docker-compose to start the light-portal locally.
https://github.com/networknt/light-config-test/tree/master/light-portal
I am starting to write a light-portal tutorial but there are still a lot of topics are missing. Please let me know if you see any gaps so that I can add more info into it.
https://doc.networknt.com/tutorial/portal/
The mail might not be the best channel as the communication is on a private channel. In the future, you can ask questions on gitter as other people might know the answer when our team members are not available immediately. Also, the answers on the public channel might help other users to learn the platform.
https://gitter.im/networknt/light-4j

Chat Application on Xamarin Cross Platform using Firebase Cloud Messaging

I want to develop Chat Application on Xamarin Cross Platform using Firebase Cloud Messaging. But Xamarin.Forms 2.3.3.180 has dependency to Xamarin.Android.Support.v4 23.3.0 and Xamarin.GooglePlayServices.Basement 32.961 has a dependency to Xamarin.Android.Support.v4 24.2.1.
How can this be resolved?
Or
Is there another way to do it?
This can be resolved in a couple of ways
Use a version of Firebase that has the same Android Support dependency
Go to Xamarin.Forms github, check out the repository and upgrade this dependency. Then build your own version or make a Pull Request and wait for it to be released
Don't use Firebase directly in your App, but use your own backend, which in turn talks to Firebase.
Wait for the Xamarin.Forms team to fix this dependency
Which one you pick is entirely up to you. It is your task to weigh the pros and cons about these approaches. Some take more time than others.
I personally think, either 1. or 2. might be your best options. Xamarin.Forms is open source and you can do whatever you want with the source. Including upgrading dependencies etc. Of course Pull Requests for the project are welcome and I encourage you to make one if you have a fix that benefits all others. Make sure to talk to the Xamarin.Forms team before you start a big task, so you don't waste your time doing something that they don't want or is not on the roadmap.
The options from Cheesebaron are a good summary. I'm assuming you're using Xamarin.Firebase.Messaging.
If you want to go with option #1, the Xamarin.Firebase.Messaging component version 32.940.0-beta3 is the most recent one whose dependencies still allow the various Xamarin.Android.Support 23.3.0 libraries that Xamarin.Forms needs. In order to see the 32.940.0-beta3 version, you'll have to enable "Prerelease" versions.
While it is marked as a beta release, it has worked for me, and hopefully Forms will allow upgrading the Android support libraries soon...

Dynamic CRM 2011 5 developers 5 databases - how to sync solutions

We are 5 developers working today with 1 database.
We have always one ASYNC service working in order to allow debugging, it means that when a developer wants to debug async, he announce to the others that he is hijacking the async service to his machine till he finishes the debugging.
We want to switch to a database per developer, there are a lot of issues with that, for example syncing schema changes / solutions with other programmers/
What is the best practice with large team of developers, is there any tool / methodology that is best for large teams.
Also, in general, what is the best practice for large teams developing Dynamic CRM 2011.
Thanks
Typically, I have worked/advised the following:
All devs work on their own virtual system. Much easier debugging. No trampling on or coordinating with others. I use VirtualBox.
Work is exported (unmanaged solutions) into a common build system.
Work is merged into the relevant managed solution(s) in build.
Managed solution(s) exported from build and applied to test / uat / pre-production etc.
Managed solution(s) applied to production environment.
Highly recommended reference: Microsoft released a very thorough whitepaper on Lifecycle management. Read about it here.
A typical development flow could be
Developers develop against their own personal development organization (Online/On-premise), in a solution with the same publisher / name
They export the developer solution
They unpack the zip file into the XML structure
And check it into source control, merging it with the master version
A typical deployment into the integration organization could be
Get a latest version of the XML structure from source control
Package it into a .zip solution
Import it into the integration organization
This way, you have a full history of all changes, linked to the developers, and you can make controlled merges, using merging tools you're familiar with.
A developer can always get a latest version from source control, package it and deploy it in his own development organization.

MQ jar compatible with Maven for IVY

My current task in the company is to implement IVY dependency management.
Now I hit the following libraries that I couldn't find in usual Maven repositories, such as http://mvnrepository.com:
com.ibm.mq.jar
com.ibm.mq.pcf.jar
...
and so forth (they are all with the prefix: com.ibm.mq).
I could found them on a separated website: http://www.java2s.com/
But it's not Maven compatible.
So, where could I found those? What's the best solution to overcome this?
I'm thinking, uploading them manually to the team nexus. But is this the usual procedure in such cases?
Thanks a lot in advance.
Best place to find those is directly from IBM. Please see this answer for the different versions of the WMQ Java/JMS client available.
As for the best way to package these, please be aware that if you want IBM to support them you need to install the client code rather than just bundling in the jar files. The reason IBM is reluctant to support non-standard installs should concern you as well if the app is to be installed in Production. The full client includes considerable additional functionality such as diagnostics, trace functions, crypto libs, JSSE, etc. In addition, it is the only install against which you can apply IBM's maintenance.
If you install the jars from a 3rd party site such as the one linked above, do you even know what version they are? Has any of the maintenance been applied? Have the latest patches been applied? Since IBM only distributes the full client, and OEMs are not authorized to distribute the jar files except as part of their application, any site offering the WMQ jar files is by definition pirating them.
I realize that requiring you to do the full client install is considered burdensome when you are used to being able to just grab some jars and go. On the other hand, if you don't need support then you might install the WMQ Client on a VM somewhere, keep it up to date and grab the jar files from there. That way you have a known-good set of files that are all in sync and to which you can apply maintenance.
If you'd like to suggest to IBM that they need a lighter-weight Java solution, feel free to raise the requirement (or vote on it if it already exists) at the IBM Request For Enhancement (RFE) Community.

There is a GUI to manage OSGi services? (in Eclipse or another project)

I'm working with an application that uses and manages a large amount of OSGi services and implementations for each service, with properties, dynamism and so. Using the command line of the Equinox console is useful, with commands like services or list -c . However, it is difficult to see specific implementations of services, and obtain a current snapshot of bounded or available services to consume. For example, you can see if the bundle references are satisfied, but you can't see which are the implementations of those satisfied references (although there are another mechanisms, of course).
So, the idea is to find a GUI with organized information (for example, using graphs) to increase the performance when you are developing in OSGi. Maybe there is one GUI in Eclipse plug-in perspective, but I can't find it.
If you don't know anything like this, I've in mind to create my own for my thesis :)
Eclipse has its Plug-in Registry view:
Window > Show View > Other... > Plug-in Development -> Plug-in Registry
This view comes with the Plug-in Development Environment (PDE), so you'll need to either use Eclipse Classic or Eclipse for Plug-in Developers or install it additionally through the standard Eclipse update mechanism.
The view can show the plugins, running in the current Eclipse instance and group them by plugin, extension points or services. I believe the last option is what you are searching for.
Although there was some work to make this view show remote content as well, it appears that this functionality hasn't made it to the normal Eclipse release.
Another tool, which can assist you in OSGi development is mToolkit. It is open source project, specifically aimed at helping developing in OSGi environments.
It provides similar view to the Plug-in Registry, but it only shows information about the OSGi bundles and services. It doesn't support nothing outside OSGi specification, so no plug-in registry inspection.
The Apache Felix console provides a web interface to manage OSGi services (and many other things) - I haven't tested it with Equinox but it has minimal dependencies so it should work in most OSGi environments. See http://felix.apache.org/site/apache-felix-web-console.html
I would checkout Peter Krien's Xray http://softwaresimplexity.blogspot.com/2012/07/xray-again.html
Have you looked at Knopflerfish and Apache Felix UIs? I think, they could be installed on top of Equinox as well.

Resources