Monday, September 7, 2015

Apache Tamaya - the new Configuration API

It was quite s long time since I have blogged here, but now it is definitive time to reactivate this blog and get in contact with all interested people on the configuration topic.

History

After JavaOne 2014, when the configuration topic was cancelled from the EE8 list, David Blevins and others proposed to start an Apache project for several reasons:
  • let focus people with experience in the topic to identify a common feature set
  • implement the ideas as part of an Apache project to provide the ideas using a free nd redistributable licence
  • use a common proven organisation also capable of generating successful adoption.This was when Apache Tamaya was put to incubation. Following we had several discussions, hangouts, mails. As a result Apache Tamaya is now available as a first release 0.1-incubating, ready to be used.
Also to be mentioned is that also Mark Struberg and Gerhard Petracek, the guys behind Deltaspike, joined this project and actively contributed to it. Given that I think it is worth to have a deeper look at the project. This is what this blog is all about.

The Apache Tamaya Project

Like a Java Specification Request

Apache Tamaya is built-up similarly to a Java Specification Request (JSR). It as an API that defines the artifacts user's typically interact with and it provides a reference implementation that implements the API so it can be used for real world projects. The reason for doing so are the following:
  1. Separating an API from the implementation gives you a very clear and clean view on the problem. You must isolate the essence of your problem and omit all kind of over-specific aspects. If done in a good way, this leads to a simple and well comprehensive API, which at the same time is powerful enough to support at least most of all other requirements (e.g. using extension points or hooks for plugin in adapted or additional functionality (aka service provider interfaces/SPIs).
  2. The API may be more independent than the reference implementation regarding its compatibility requirements. As an example the Java 7 based API of Apache Tamaya in fact is also compatible Java 6 and Java ME platforms.
  3. You can start with a minimal set of functionality on the API and extending it step-by-step as needed. Very extension must be checked, if it is really necessary or if the requirement not also can be implemented using the existing API/SPI. This ensures your API is really focusing on the minimal aspects thefore getting lean and clear.
  4. Last but not least, somehow corresponding to the previous point, adding new functionality does not interfere with the basic API/implementation, making it very easy to add new functionality. The Apache Tamaya project also contains quite a few of so called extensions that only depend on the API, so the project has already proven being able to cover this aspect very efficiently.
The only difference to a JSR is the current lack of a Technical Compatibility Kit (TCK) that ensures that different implementations of the API are compatible with a common set of rules. Similarly we do not have something like a "specification" (but we have a very extensive documentation, somehow quite similar to a specification, also covering many of the aspects/discussions done during the evaluation phase for the Java EE JSR 2 years ago).

Compatibility

Apache Tamaya currently supports both Java 7 and Java 8. Reasons behind is that there is still plenty of code, especially in the enterprise context, running on Java 7. And we wanted people to be able to use Apache Tamaya also before they move to the Java 8 platform. Said that the API can be added to your maven build quite easily:

<dependency>
  <groupId>org.apache.tamaya</groupId>
  <artifactId>tamaya-java7-api</artifactId>
  <version>0.1-incubating</version>
</dependency>

Or, when with Java 8:

<dependency>
  <groupId>org.apache.tamaya</groupId>
  <artifactId>tamaya-api</artifactId>
  <version>0.1-incubating</version>
</dependency>

Similarly the implementation (called core), can be added similarly:

Compatible with Java 7 and beyond:

<dependency>
  <groupId>org.apache.tamaya</groupId>
  <artifactId>tamaya-java7-core</artifactId>
  <version>0.1-incubating</version>
</dependency>

Compatible  with Java 8:

<dependency>
  <groupId>org.apache.tamaya</groupId>
  <artifactId>tamaya-core</artifactId>
  <version>0.1-incubating</version>
</dependency>

The Main Concepts

Configuration Abstraction and Access 

One of the main objectives is to define an abstraction for configuration and define a common way of accessing it using simple Java code. So the first thing is to define a model for configuration:

public interface Configuration {

  default String get(String key) {...}
  default <T> T get(String key, Class<T> type) {...}
  default Configuration with(ConfigOperator operator) {...}
  default <T> T query(ConfigQuery<T> query) {...}

  <T> T get(String key, TypeLiteral<T> type);
  Map<String, String> getProperties();

  // not available for Java 7
  default Optional<String> getOptional(String key) {...}
  default <T> Optional<T> getOptional(String key,
                                      Class<T> type) {...}
  default <T> Optional<T> getOptional(String key,
                                      TypeLiteral<T> type) {...}
  default Optional<Boolean> getBoolean(String key) {...}
  default OptionalInt getInteger(String key) {...}
  default OptionalLong getLong(String key) {...}
  default OptionalDouble getDouble(String key) {...}
}

So looking at this interface some important key decisions can be identified:
  • Configuration entries are accessed using String keys.
  • Configuration values are basically modelled as Strings
  • Typed access is supported as well using Class or TypeLiteral.
  • Configuration can be accessed key by key or by accessing the full properties map (getProperties). Hereby there is a constraint that the returned map may not contain all entries that would also be available when accessing them individually. Reason is that some configuration sources may not be able to list all the entries (aka being scannable). Refer also the SPI part, when the PropertySource interface is discussed, for further details.
  • The methods with, query define so called functional extension points, allowing additional functionality being added as operators/queries that can be applied on a configuration.
  • Finally, only defined in the API version depending on Java 8, are all the methods returning Optional values. These add support for the new Optional artifact introduced with Java 8. Similarly all the default methods were replaced in the Java 7 variant with corresponding abstract base implementations shipped with the reference implementation.
Instances of Configuration can be accessed from a ConfigurationProvider singleton:

Configuration config = ConfigurationProvider.getConfiguration();

Hereby  always a valid instance must be returned. It is not required that always the same instance is returned. Especially when running in a contextual environment, such as Java EE, each context may return different configurations, also reflecting the configuration resources deployed in the different Java EE artifacts. Similarly also OSGI based environments have their own classloader hierarchies, that may require isolation of configuration along the classloader bounderies.

Functional Extension Points

In the previous section we already mentioned the methods with and query. These take as argument a ConfigurationOperator or a ConfigurationQuery<T>, which are defined as follows:

@FunctionalInterface
public interface ConfigOperator {
    Configuration operate(Configuration config);
}

@FunctionalInterface
public interface ConfigQuery<T> {
    T query(Configuration config);
}

So basically ConfigOperator acts as a mapping that derives a Configuration from another Configuration, whereas a ConfigurationQuery<T> can return any kind of result. Both constructs allow adding functionality in multiple ways without having to deal with it on the Configuration interface, e.g. aspects like:

  • Filtering of configuration for specific use cases, e.g. recombining entries, or removing entries out of scope for a certain use case
  • Masking of entries or sections for security reasons
  • Creating typed objects based on configuration
  • Statistical details on a given configuration, e.g. the defined sections
  • Configuration validation and documentation
  • Conversion of configuration, e.g. to a JSON representation
  • and much more.

For running examples you may consider having a look at the tamaya-functions extension module, which already implements quite a few of aspects.


A minimalistic Example

To clarify things a bit more let's create a small example, which just uses the base mechanism provided with Tamaya's core implementation. Let's assume we build a small node, that a micro-service performing a simple compound interest rate calculation (I will omit the financial details how this is achieved here). Such a calculation basically is defined as:

We assume that the interest rate is something that is configured for this component, so in our component we simply add the following code:

BigDecimal interestRate = ConfigurationProvider.getConfiguration()
                .get("com.mycomp.ratecalculator.rate",
                     BigDecimal.class);

When using Java 8 we could also easily combine it with a default value:

BigDecimal interestRate = ConfigurationProvider.getConfiguration()
                .getOptional("com.mycomp.ratecalculator.rate",
                             BigDecimal.class)
                .orElse(BigDecimal.of(0.05d));

Given that we can easily implement our business logic, also using the JSR 354 type (see http://javamoney.org):

public class MyRateCalculator implements RateCalculator{

  private BigDecimal interestRate = ConfigurationProvider
                .getConfiguration()
                .getOptional("com.mycomp.ratecalculator.rate",
                             BigDecimal.
class)
                .orElse(BigDecimal.of(0.05d));

  public MonetaryAmount calcRate(MonetaryAmount amt, int periods){
   ...
  }

}

Now given you have built your logic in a similar way you have multiple benefits:
  • You can deploy your calculator as part of a Desktop application.
  • You can deploy your calculator as part of a Java EE application.
  • You can deploy your calculator in an OSGI container.
  • You can deploy your calculator easily as a standalone micro-service (with an appropriate API, e.g. REST).



Making Tamaya Support Optional

Basically you can even use the Tamaya optional module to integrate with Tamaya only as an optional dependency. This extension module is a very simple module, adding basically only one class to your dependency path, which

  • Ensures Tamaya API is on your classpath
  • Optionally checks if a Configuration is accessible from a given context.
  • Delegates Configuration request to Tamaya, or - if not availalbe - to a delegate passed from your logic, when creating the delegate:
import org.apache.tamaya.ext.optional.OptionalConfiguration;

private BigDecimal interestRate = 
              Optional.ofNullable(
                 OptionalConfiguration
.of(
                    (k) -> MyConfigMechanism.get(k)
                              
// String get(String key);
                 )
                .get("com.mycomp.ratecalculator.rate",
                             BigDecimal.
class))
                .orElse(BigDecimal.of(0.05d));

This allows you to support Tamya Configuration, but you can still use your own default configuration logic as default, if Tamaya is not loaded in your target environment.


What else?

From an API perspective there is not much more needed. The TypeLiteral class used before is the same, which is also known well from Java EE (CDI) and the only other artifact not mentioned is the ConfigException class. Of course, this functionality per se is very minimalistic, but it exactly does, what it is supposed to: it provides a minimalistic access API for configuration. And why we think this is so important? Here is why
  1. Everybody writing components typically writes some configuration logic, but everybody does it different: different formats, locations, key schemes, overridings etc. Also Apache Tamaya neither wants to define what you configure, or where your configuration is located and how it can be overridden. But we define a common API for accessing the configuration.
  2. Given that components from different teams can be more easily integrated within a project, but also within a concrete enterprise context, since all components refer to the same configuration mechanism.
  3. Even better, when using Tamaya overriding rules of configuration can be more or less ignored, since the mechanisms of Tamaya (I will present the corresponding SPI in the next blog here) already provide these mechanisms, so they can be adapted as needed.
  4. Similarly the formats used for configuration and also the fact that configuration may be locally stored in the file system or be remotely distributed is not of importance anymore.
This per se should render Apache Tamaya to very interesting and crucial piece of any application or module architecture. Additionally its SPI brings additional benefits, especially within bigger entprise contexts. We will look at the SPI  and the extensions in the next blog posts here. So stay tuned!

As always comments are welcome. If anybody out there is also thinking of contributing to the project please get in contact with us under dev@tamaya.incubator.apache.org.

And of course, help us spreading words writing tweets, blogs, adopting it, using it, loving it! 

Want to hear more?

Want to know more about Apache Tamaya? Visit our project site or even better join and see us at 






337 comments:

  1. I went through your blog and it’s totally awesome. You can consider including RSS feed in your site, so that we can follow your blog and get latest update direct on my inbox.
    J2EE Training in Chennai
    .Net Training in Chennai
    PHP Training in Chennai

    ReplyDelete
  2. I would add a RSS feed, if somebody can tell me how this is possible here on blogger (I did not find such a feature) ;)
    Alternately I recommend following me as @atsticks on Twitter, where I will mention all kind of publications, I do, not only the ones here...
    Or the ultimate alternative would be to help us on Tamaya itself. We will support anyone willing to help and you have a good chance that you can present our project at developer conferences thorughout the world and get good visibility ;)

    ReplyDelete
  3. Selenium is a most popular automation testing tool used to validate web application and other internet applications. This test automation tool readily integrates with your web browser and makes complicated testing process lot simpler. Selenium Course in Chennai | Best Selenium training institute in Chennai

    ReplyDelete
  4. I gathered useful information on this point . Thank you posting relative information and its now becoming easier to complete this assignment
    mahjong |geometry dash | hulk|agario| kizi|sniper games| minecraft|halloween | pacman| games

    ReplyDelete
  5. Hi, this is Yasmin from Chennai. Thanks for sharing such an informative post. Keep posting. I did Selenium Training in Chennai at Besant technologies. It’s really useful for me to know more knowledge about selenium. They also give 100% placement guidance for all students.

    ReplyDelete
  6. Very nice piece of article which can help many developers, thank you for sharing your knowledge with us. Keep sharing.
    PHP training in Chennai||PHP course in Chennai ||PHP training institute in Chennai

    ReplyDelete
  7. Thanks for sharing detailed information of unified functional testing automation tool. QTP Course in Chennai | QTP training

    ReplyDelete
  8. Excellent article on load testing!!! This testing exhibits the ability of a software application/system to withstand actual load. Loadrunner Training in Chennai | Best Loadrunner training institute in Chennai

    ReplyDelete
  9. The main thing which i like about web designing is that itneeds creativity and we need to work differently acccording to our clients need this needs a creativity and innovation.
    web designing course in chennai|web designing training in chennai|web designing courses in chennai

    ReplyDelete
  10. After the website s completed it is very impoprtant to market it. Be it a brand or a website, if you want to reach a large audiece then effective marketive should done and this can be achieved by SEO.
    Seo training in chennai|Seo training|Seo courses in chennai|Seo training chennai

    ReplyDelete
  11. Hi author I actually teach web designing, and after I read this article I was able to clarify a doubt and this helped me understanding a certain concept better and so I could teach my students well. Thank you.
    web designing course in chennai|web designing training in chennai

    ReplyDelete
  12. Nice post !! I really enjoyed your well written article . thanks for share...

    ReplyDelete
  13. Excellent Post!!! Your interview questions on QTP automation tool will assist freshers and experienced professionals to sharpen their skills and be successful in job interview. QTP Training in Chennai | QTP training

    ReplyDelete
  14. If you are willing to develop a website but you dont know web development or coding then relax wordpress CMS platform is just for you. Where you can create website all by yourself.
    wordpress training in chennai | Wordpress course in chennai | FITA Academy reviews

    ReplyDelete
  15. Hibernate and spring are the frameworks of Java. A java developer should be well aware of these frameworks in order to master the technology and work efficeiently.
    spring training in chennai | hibernate training in chennai
    FITA Academy reviews

    ReplyDelete
  16. Thanks for this valuable info selenium testing is an ope source where it is very useful for the tester to use selenium.
    selenium training in chennai

    ReplyDelete
  17. A good blog. Thanks for sharing the information. It is very useful for my future. keep sharing
    Signature:
    i like play games happy wheels online friv , girlsgogames , games2girls and play happy wheels 2 games

    ReplyDelete
  18. In India thenumber of smartphone users have been on a rise. Among them also the people using android is way to high. Being an android developer would be the dorrect career choice.
    Android training in Chennai | Android course in Chennai | Android training institute in Chennai

    ReplyDelete
  19. Hadoop is one of the best cloud based tool for analysisng the big data. With the increase in the usage of big data there is a quite a demand for hadoop professionals.
    Big data training in Chennai | Hadoop training Chennai | Hadoop training in Chennai

    ReplyDelete
  20. The comments are nothing but spam. You might not care about spam on your blog, but you should care about legit readers who read them expecting a fruitful discussion and find this crap instead.

    ReplyDelete
  21. This comment has been removed by a blog administrator.

    ReplyDelete
  22. Apache Tamaya is a highly flexible configuration solution based on an modular, extensible and injectable key/value based design, which should provide a minimal but extendible modern and functional API leveraging SE, ME and EE environments.

    ReplyDelete

  23. A very interesting article. The insights are really helpful and informative. Thanks for posting.

    Best Java Training in Chennai

    ReplyDelete
  24. The blog or and best that is extremely useful to keep I can share the ideas. Age Of War 2
    Big Farm | Slitherio | Tank Trouble
    Of the future as this is really what I was looking for, I am very comfortable and pleased to come here. Thank you very much.
    Happy Wheels | Goodgeme Empire | Slither.io

    ReplyDelete
  25. This is my first visit to your blog, your post made productive reading, thank you. dot net training in chennai

    ReplyDelete
  26. You go to our Web page you can play online games for free.
    Our Web page selection is the biggest collection so you can play entirely for free
    gun mayhem | age of war
    learn to fly | happy wheels game
    tank trouble

    ReplyDelete
  27. Thanks for sharing this article, The above article having a valuable information. java programming language is very easy to learn.

    ReplyDelete
  28. Superb. I really enjoyed very much with this article here. Really it is an amazing article I had ever read. I hope it will help a lot for all. Thank you so much for this amazing posts and please keep update like this excellent article.thank you for sharing such a great blog with us. expecting for your.
    Digital Marketing Company in India

    ReplyDelete
  29. That really great information.....
    keep me informed
    best online website development courses

    ReplyDelete
  30. You post explain everything in detail and it was very interesting to read. Thank you. nata coaching centres in chennai

    ReplyDelete
  31. Very Useful Blog I really Like this blog and i will refer this blog...
    And i found a some usefull content for Online Java training check It out .

    ReplyDelete


  32. Thanks i like your blog very much , i come back most days to find new posts like this!Good effort.I learnt it



    Java and J2EE Training in Chennai - AmitySoft

    ReplyDelete
  33. We are supporting the students to get placed. Android is a very good technology for the job opportunities. Overall 45% of job vacant available for Android. Android Training in Chennai | Android Training in Tambaram | Android Training in Sholinganallur | Android Training in Chennai

    ReplyDelete
  34. great article. Thanks for sharing java Configuration .its really helpful for me.java is the one of the most programming language build up on api....keep sharing on updated java tutorials?

    ReplyDelete
  35. Excellent and very cool idea and the subject at the top of magnificence and I am happy to this post..Interesting post! Thanks for writing it.What's wrong with this kind of post exactly? It follows your previous guideline for post length as well as clarity..
    Android Training in Chennai

    ReplyDelete
  36. I have read your blog and i got a very useful and knowledgeable information from your blog.You have done a great job . If anyone want Java Training in Chennai, Please visit our page Selenium Training in Chennai

    ReplyDelete
  37. This article is so informatic and it really helped me to know more about the Selenium Testing. This selenium article helps the beginners to learn the best training course. So keep updating the content regularly.
    Selenium Training in Chennai | Best Selenium Training institute in Chennai | Selenium Course in Chennai

    ReplyDelete
  38. This comment has been removed by the author.

    ReplyDelete
  39. I just see the post i am so happy to the communication science post of information's.So I have really enjoyed and reading your blogs for these posts.Any way I’ll be replay for your great thinks and I hope you post again soon...
    Java Training in Chennai

    ReplyDelete



  40. It's interesting that many of the bloggers your tips helped to clarify a few things for me as well as giving.. very specific nice content. And tell people specific ways to live their lives.Sometimes you just have to yell at people and give them a good shake to get your point across.
    Web Design Company
    Web Development Company
    Web Development Company

    ReplyDelete
  41. Informative article, just what I was looking for.seo services chennai

    ReplyDelete

  42. This article is more interesting and content is really useful to me. Keep updating the content regularly and this software testing content is helped to know more detailed.Software testing training in Chennai | Software testing training | testing training in Chennai

    ReplyDelete
  43. This artical contain full of java basic and scopes.Thanks for sharing this artical.


    Android Training in Chennai

    ReplyDelete

  44. This is excellent information. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
    Android Training in Chennai
    Ios Training in Chennai

    ReplyDelete
  45. This article provides the information about Java its key features and scope for java professionals. This information is really helpful me to know more about Java programming language
    Want to learn java through online in free basic..,


    Core Java Online Training

    ReplyDelete
  46. Wonderful blog.. Thanks for sharing informative Post. Its very useful to me.

    Installment loans
    Payday loans
    Title loans

    ReplyDelete
  47. It's interesting that many of the bloggers to helped clarify a few things for me as well as giving.Most of ideas can be nice content.The people to give them a good shake to get your point and across the command.
    Java Training in Chennai

    ReplyDelete
  48. it is really amazing...thanks for sharing....provide more useful information...
    Mobile app development company

    ReplyDelete
  49. I have read your blog and i got a very useful and knowledgeable information from your blog.You have done a great job .


    Android Training in Chennai

    ReplyDelete
  50. When I find challenge in trying to debug java codes, I often use the information published by the java professionals. I thus find information as this to be very useful and valuable in my programming life. Java is one of the most challenging programming languages and thus one will often need help while configuring Java SE or EE. Music school personal statement Editing

    ReplyDelete
  51. It's interesting that many of the bloggers to helped clarify a few things for me as well as giving.Thanks for sharing..,


    Core Java Online Training

    ReplyDelete
  52. Great post.first of all Thanks for writing such lovely Post! Earlier I thought that posts are the only most important thing on any blog.Thanks for sharing..


    Selenium Training in Bangalore

    ReplyDelete
  53. Useful post has been shared for our vision. i have enjoyed with your blog share. Its very useful to me... Thank you.. keep posting!!!
    Hadoop Training in Chennai | Salesforce Training in Chennai

    ReplyDelete
  54. Pretty very amazing information! I read our blog all blog categories article very useful.I bookmarked to our info.Thanks for the amazing information.Java Training in Chennai
    Java Training Institute in Velachery

    ReplyDelete
  55. Your information about Java is useful for me to know more technical information. Really very informative post you shared here. Keep sharing this type of informative blog. If anyone wants to become a Java professional learn Java Training in Bangalore. Nowadays Java has tons of job opportunities for all professionals...Big Data Hadoop Training in Bangalore | Data Science Training in Bangalore

    ReplyDelete
  56. I wondered upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.
    iOS App Development Company

    ReplyDelete
  57. I have read your blog and i got a very useful and knowledgeable information from your blog.You have done a great job . If anyone want Java Training in Chennai, Please visit our page


    Selenium Training in Bangalore

    ReplyDelete
  58. Nice and good article.. it is very useful for me to learn and understand easily.. thanks for sharing your valuable information and time.. please keep updating.

    Java Training in chennai | PHP Training in chennai | Dot Net Training in chennai

    ReplyDelete
  59. Your information about Java is useful for me to know more technical information. Really very informative post you shared here. Keep sharing this type of informative blog. If anyone wants to become a Java professional learn


    Python Online Training

    ReplyDelete
  60. This comment has been removed by the author.

    ReplyDelete
  61. his article is so informatic and it really helped me to know more about the Selenium Testing. This selenium article helps the beginners to learn the best training course. So keep updating the content regularly.

    Android Training in Chennai

    ReplyDelete

  62. Interesting blog about apache tamaya new configuration which attracted me more.Spend a worthful time.keep updating more.
    MSBI Training in Chennai

    ReplyDelete
  63. A easy and exciting blog about java learning. Please comment your opinions and share..
    http://foundjava.blogspot.in

    ReplyDelete
  64. It's interesting that many of the bloggers your tips helped to clarify a few things for me as well as giving.. very specific nice content. Want to build your website

    White Label Website Builder

    ReplyDelete
  65. Excellent post!!!. The strategy you have posted on this technology helped me to get into the next level and had lot of information in it. Selenium Training in Chennai | Java Training in Chennai

    ReplyDelete
  66. Nice blog. Thank you for sharing. The information you shared is very effective for learners I have got some important suggestions from it.
    Hadoop Training in Chennai

    ReplyDelete
  67. Finding the time and actual effort to create a superb article like this is great thing. I’ll learn many new stuff right here! Good luck for the next post buddy..

    White Label Website Builder

    ReplyDelete
  68. I wondered upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.

    Texting API
    Text message marketing
    Digital Mobile Marketing
    Sms API
    Sms marketing

    ReplyDelete
  69. It's interesting that many of the bloggers to helped clarify a few things for me as well as giving.Most of ideas can be nice content.The people to give them a good shake to get your point and across the command.

    Java Training in BTM Layout


    Java Training in Marathahalli

    ReplyDelete
  70. Thanks for sharing informative article. Download Windows 7 ultimate for free from getintopc. It helps you to explore full functionality of windows operating system.

    ReplyDelete
  71. Really impressive post. I read it whole and going to share it with my social circules. I enjoyed your article and planning to rewrite it on my own blog.
    my latest blog post | my latest blog post | my latest blog post | my latest blog post | my latest blog post | my latest blog post | my latest blog post

    ReplyDelete
  72. Interesting article... Thanks for sharing.....
    Android training

    ReplyDelete
  73. Nice blog. Thank you for sharing. The information you shared is very effective for learners.
    Spoken english Training in Bangalore

    ReplyDelete
  74. Your post about technology was very helpful to me. Very clear step-by-step instructions. I appreciate your hard work and thanks for sharing.
    Android Training in Chennai
    Android Course in Chennai

    ReplyDelete
  75. Nice blog. Thank you for sharing. The information you shared is very effective for learners.
    Best Oracle Training in Bangalore

    ReplyDelete
  76. This comment has been removed by the author.

    ReplyDelete
  77. Best Digital Marketing company Anantapur
    helpful information, thanks for writing and share this information

    ReplyDelete
  78. I feel really happy to have seen your webpage and look forward to so
    many more entertaining times reading here. Thanks once more for all
    the details.


    AWS Training in Bangalore


    AWS Training in Bangalore

    ReplyDelete
  79. Great Information you are shared with us. check it once through MSBI Online Training Bangalore

    ReplyDelete
  80. The blog is very interesting and will be much useful for use.
    Thanks so much

    word cookies answersaz
    archery games
    scratch games

    ReplyDelete
  81. Your good knowledge and kindness in playing with all the pieces were
    very useful. I don’t know what I would have done if I had not
    encountered such a step like this.


    java training in chennai


    java Training in Bangalore

    ReplyDelete
  82. Awesome blog its really informative for me and other thanks for shearing this.

    white label website builder

    ReplyDelete
  83. Nice post about MSBI, looking for best msbi online training institute ?

    ReplyDelete
  84. Thanks. Nice blog!! Very useful information is providing by your blog. Great tutorial about
    Best digital marketing workshop in chennai

    ReplyDelete
  85. This is really a nice and informative, containing all information and also has a great impact on the new technology. Thanks for sharing it
    digital marketing agency

    ReplyDelete
  86. Thanks for sharing about digital marketing,your blog always brought some useful information,i hope you will share more article like that...
    digital marketing classes in chennai

    ReplyDelete
  87. I read your blog this is really good and it helpful for learners. Thanks for sharing your thoughts with us Keep update on MSBI Online Training Bangalore

    ReplyDelete
  88. Ciitnoida provides Core and java training institute in

    noida
    . We have a team of experienced Java professionals who help our students learn Java with the help of Live Base Projects. The object-

    oriented, java training in noida , class-based build

    of Java has made it one of most popular programming languages and the demand of professionals with certification in Advance Java training is at an

    all-time high not just in India but foreign countries too.

    By helping our students understand the fundamentals and Advance concepts of Java, we prepare them for a successful programming career. With over 13

    years of sound experience, we have successfully trained hundreds of students in Noida and have been able to turn ourselves into an institute for best

    Java training in Noida.

    java training institute in noida
    java training in noida

    ReplyDelete
  89. Extraordinary and helpful article. Making content consistently is extremely intense. Your focuses are roused me to proceed onward.


    digital marketing

    ReplyDelete
  90. Magnificent design and great utilization of fluctuated media. Truly inside and out data also. Extremely like how you separate the points into a few subsections with their own pages.


    iphone 8 plus case

    ReplyDelete
  91. Great stuff. The content is so strong and obviously it will be a useful content for learners. Thanks for sharing your experience and knowledge.

    Java training in Chennai

    ReplyDelete
  92. Thanks for the informative article.This is one of the best resources I have found in quite some time.Nicely written and great info.I really cannot thank you enough for sharing.

    Herbalife in Chennai
    Wellnesscentres in Chennai
    Weight Loss in Chennai
    Weight Gain in Chennai

    ReplyDelete
  93. Nice Blog, When i was read this blog i learnt new things & its truly have well stuff related to developing technology, Thank you for sharing this blog.
    iPhone App Training Course
    Mobile App Training Tnstitutes

    ReplyDelete
  94. This was an nice and amazing and the given contents were very useful and the precision has given here is good.
    AWS Training in Chennai

    ReplyDelete
  95. Thanks for sharing information. Your web-site is very cool. I am impressed by the details that you have on this blog. It reveals how nicely you perceive this subject.. :)
    Java Training in Chennai | Java Training Institute in Chennai

    ReplyDelete
  96. interesting to learn about "Java Configuration" thannks for sharing.
    Data Science Training in Chennai

    ReplyDelete
  97. This was an nice and amazing and the given contents were very useful and the precision has given here is good.


    Bigdata training institute in bangalore

    ReplyDelete
  98. I've been surfing on the web over 3 hours today, yet I never found any fascinating article like yours. It's enough worth for me. As I would see it, if all web proprietors and bloggers made exceptional substance as you did, the net will be basically more productive than at whatever point in late memory.

    Brighton Accountants

    ReplyDelete
  99. Artificial intelligence Training in noida
    Artificial intelligence Training in noida-Artificial Intelligence Training in Noida, Artificial Intelligence Training classes in Noida, Artificial Intelligence Training classes in Noida, Artificial Intelligence Training

    by Real time ARTIFICIAL INTELLIGENCE Experts, Big-Data and ARTIFICIAL INTELLIGENCE Certification Training in Noida



    WEBTRACKKER TECHNOLOGY (P) LTD.
    C - 67, sector- 63, Noida, India.
    F -1 Sector 3 (Near Sector 16 metro station) Noida, India.

    +91 - 8802820025
    0120-433-0760
    0120-4204716
    EMAIL: info@webtrackker.com
    Website: www.webtrackker.com



    Our Other Courses:


    artificial intelligence Training in noida

    SAS Training Institute in Delhi

    SAS Training in Delhi

    SAS Training center in Delhi

    Sap Training Institute in delhi

    Sap Training in delhi

    Best Sap Training center in delhi

    Best Software Testing Training Institute in delhi

    Software Testing Training in delhi

    Software Testing Training center in delhi

    Best Salesforce Training Institute in delhi

    Salesforce Training in delhi

    Salesforce Training center in delhi

    Best Python Training Institute in delhi



    Python Training in delhi


    Best Android Training Institute In delhi


    Best Python Training center in delhi


    Android Training In delhi


    best Android Training center In delhi

    ReplyDelete

  100. Best Solidworks training institute in noida

    SolidWorks is a solid modeling computer-aided design (CAD) and computer-aided engineering (CAE) computer program that runs on Microsoft Windows. SolidWorks is published by Dassault Systems. Solid Works: well, it is purely a product to design machines. But, of course, there are other applications, like aerospace, automobile, consumer products, etc. Much user friendly than the former one, in terms of modeling, editing designs, creating mechanisms, etc.
    Solid Works is a Middle level, Main stream software with focus on Product development & this software is aimed at Small scale & Middle level Companies whose interest is to have a reasonably priced CAD system which can support their product development needs and at the same time helps them get their product market faster.

    Company Address:
    WEBTRACKKER TECHNOLOGY (P) LTD.
    C-67,Sector-63,Noida,India.
    E-mail: info@webtracker.com
    Phone No: 0120-4330760 ,+91-880-282-0025

    webtrackker.com/solidworks-training-Course-institute-in-noida-delhi

    ReplyDelete
  101. I've been surfing on the web more than 3 hours today, yet I never found any stupefying article like yours. It's imperatively worth for me. As I would see it, if all web proprietors and bloggers made confusing substance as you did, the net will be in a general sense more profitable than at whatever point in late memory.

    Tax Advisors

    ReplyDelete
  102. Data science Training Institute in Noida

    Webtrackker Data science Training Institute in Noida Accelerate your career in data science by starting from basics in Statistics, Data Management and Analytics to advanced topics like Neural Networks, Machine Learning and Big Data.



    http://webtrackker.com/Best-Data-Science-Training-Institute-in-Noida.php



    Data science Training Institute in Noida

    OUR OTHER COURCES

    SAS Training center in Delhi


    Best Software Testing Training Institute in delhi

    Best Salesforce Training Institute in delhi

    Best Python Training Institute in delhi



    ReplyDelete
  103. 3D Animation Training in Noida

    Best institute for 3d Animation and Multimedia

    Best institute for 3d Animation Course training Classes in Noida- webtrackker Is providing the 3d Animation and Multimedia training in noida with 100% placement supports. for more call - 8802820025.

    3D Animation Training in Noida

    Company Address:

    Webtrackker Technology

    C- 67, Sector- 63, Noida

    Phone: 01204330760, 8802820025

    Email: info@webtrackker.com

    Website: http://webtrackker.com/Best-institute-3dAnimation-Multimedia-Course-training-Classes-in-Noida.php

    ReplyDelete
  104. Graphics designing training institute in Noida
    Best Graphics training institute in Noida, Graphic Designing Course, classes in Noida- webtrackker is providing the graphics training in Noida with 100% placement supports. If you are looking for the Best Graphics designing training institute in Noida For more call - 8802820025.

    Graphics designing training institute in Noida, Graphics designing training in Noida, Graphics designing course in Noida, Graphics designing training center in Noida

    Company address:
    Webtrackker Technology
    C- 67, Sector- 63, Noida
    Phone: 01204330760, 8802820025
    Email: info@webtrackker.com
    Website: http://webtrackker.com/Best-institute-for-Graphic-Designing-training-course-in-noida.php

    ReplyDelete
  105. Its really an Excellent post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog. Thanks for sharing....

    Seo Experts
    Seo Company
    Web Designing Company
    Digital Marketing
    Web Development Company
    App Development

    ReplyDelete
  106. Appreciation for really being thoughtful and also for deciding on certain marvelous guides most people really want to be aware of.

    Spark Training in Chennai
    Spark with Scala Training in Chennai

    ReplyDelete
  107. Webtrackker Technology is IT Company and also providing
    the Solidwork training in Noida at running project by
    the real time working trainers. If you are looking for
    the Best Solidwork training institute in Noida then you can contact
    to webtrackker technology.
    ads
    Webtrackker Technology
    C- 67, Sector- 63 (Noida)
    Phone: 0120-4330760, 8802820025

    8802820025
    Solidwork training institute in Noida

    ReplyDelete
  108. Latest News in Hindi

    Latest News in Hindi- Hindustan channel is the best online web portal in india where you read the all latest indian news in hindi. if you are looking the Latest News in Hindi, live news channel, hindi news channel, live news channels in hindi, live hindi channels then hindustan channel is best for you.
    Latest News in Hindi

    Company address:
    C- 67, Sector- 63, Noida
    Phone: 01204330760, 8802820025


    URL: https://hindustanchannel.com

    ReplyDelete
  109. Nice post! definitively I will come back to update me on this technology Thanks for the informative post. Keep doing.
    JAVA Training Chennai
    JAVA J2EE Training in Chennai
    JAVA J2EE Training Institutes in Chennai
    Java training institutes in chennai

    ReplyDelete
  110. Take Part in KrogerFeedback Survey And Win Fuel Points - krogerfeedback

    ReplyDelete
  111. I appreciate your efforts because it conveys the message of what you are trying to say. It's a great skill to make even the person who doesn't know about the subject could able to understand the subject . Your blogs are understandable and also elaborately described. I hope to read more and more interesting articles from your blog. All the best.
    python training in velachery | python training institute in chennai



    ReplyDelete
  112. Excellent informative blog, Thanks for sharing.
    Web Design Training

    ReplyDelete
  113. I simply want to give you a huge thumbs up for the great info you have got here on this post.
    Java training in Tambaram | Java training in Velachery

    Java training in Omr | Oracle training in Chennai

    ReplyDelete
  114. Nice post ! Thanks for sharing valuable information with us. Keep sharing.. DevOps Online Training

    ReplyDelete
  115. Good job in presenting the correct content with the clear explanation. The content looks real with valid information. Good Work

    DevOps is currently a popular model currently organizations all over the world moving towards to it. Your post gave a clear idea about knowing the DevOps model and its importance.

    Good to learn about DevOps at this time.


    devops training in chennai | devops training in chennai with placement | devops training in chennai omr | devops training in velachery | devops training in chennai tambaram | devops institutes in chennai | devops certification in chennai | trending technologies list 2018

    ReplyDelete
  116. It's really a nice experience to read your post. Thank you for sharing this useful information. If you are looking for more about R Programming Course Fees | R Language training in Chennai

    ReplyDelete
  117. Amazon has a simple web services interface that you can use to store and retrieve any amount of data, at any time, from anywhere on the web. Amazon Web Services (AWS) is a secure cloud services platform, offering compute power, database storage, content delivery and other functionality to help businesses scale and grow.For more information visit.
    aws online training
    aws training in hyderabad
    aws online training in hyderabad

    ReplyDelete
  118. Great efforts put it to find the list of articles which is very useful to know, Definitely will share the same to other forums.Big data course fees | hadoop training in chennai velachery | hadoop training course fees in chennai | Hadoop Training in Chennai Omr

    ReplyDelete
  119. Thank you for sharing your article. Great efforts put it to find the list of articles which is very useful to know, Definitely will share the same to other forums.
    Data Science Training in chennai at Credo Systemz | data science course fees in chennai | data science course in chennai quora | data science with python training in chennai

    ReplyDelete
  120. Very useful and information content has been shared out here, Thanks for sharing it.
    Visit Learn Digital Academy for more information on Digital marketing course in Bangalore.

    ReplyDelete
  121. These tips are really helpful. Thanks a lot.Keep it up.Keep blogging.!!
    Digital Marketing courses in Bangalore

    ReplyDelete
  122. Thanks for your post. This is excellent information. The list of your blogs is very helpful for those who want to learn, It is amazing!!! You have been helping many application.
    best selenium training in chennai | best selenium training institute in chennai

    ReplyDelete
  123. Awesome! Education is the extreme motivation that open the new doors of data and material. So we always need to study around the things and the new part of educations with that we are not mindful.
    python training in chennai
    python course institute in chennai

    ReplyDelete
  124. Amazing Post . Thanks for sharing. Your style of writing is very unique. Pls keep on updating.

    Education
    Technology

    ReplyDelete
  125. Great thoughts you got there, believe I may possibly try just some of it throughout my daily life.
    Best Devops online Training
    Online DevOps Certification Course - Gangboard

    ReplyDelete
  126. It's interesting that many of the bloggers to helped clarify a few things for me as well as giving. Most of ideas can be nice content. The people to give them a good shake to get your point and across the command.safety course in chennai

    ReplyDelete
  127. This site is very good to me. Because this site has much more sense post. So I am posting at the site. I would like to know more of the unknown.
    Top posts and takes a lot of good to me and to all of the beautiful and the good.
    laptop chiplevel training in hyderabad

    ReplyDelete
  128. Great Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.
    Java training in Chennai

    Java training in Bangalore

    Selenium training in Chennai

    Selenium training in Bangalore

    ReplyDelete
  129. Wow!! What a great blog!! I really liked your article and appreciate your work.
    I have found this article while searching on internet and I would recommend this to everyone.
    laptop chip level training in hyderabad

    ReplyDelete
  130. Sap fico training institute in Noida

    Sap fico training institute in Noida - Webtrackker Technology is IT Company which is providing the web designing, development, mobile application, and sap installation, digital marketing service in Noida, India and out of India. Webtrackker is also providing the sap fico training in Noida with working trainers.


    WEBTRACKKER TECHNOLOGY (P) LTD.
    C - 67, sector- 63, Noida, India.
    F -1 Sector 3 (Near Sector 16 metro station) Noida, India.

    +91 - 8802820025
    0120-433-0760
    0120-4204716
    EMAIL: info@webtrackker.com
    Website: www.webtrackker.com

    ReplyDelete
  131. Great info. I love all the posts, I really enjoyed,
    nice post and site, good work!
    I would like more information about this, because it is very nice.
    java training in hyderabad

    ReplyDelete
  132. Whoa! I’m enjoying the template/theme of this website. It’s simple, yet effective. A lot of times it’s very hard to get that “perfect balance” between superb usability and visual appeal. I must say you’ve done a very good job with this.
    aws training in bangalore
    RPA Training in bangalore
    Python Training in bangalore
    Selenium Training in bangalore
    Hadoop Training in bangalore

    ReplyDelete
  133. Whoa! I’m enjoying the template/theme of this website. It’s simple, yet effective. A lot of times it’s very hard to get that “perfect balance” between superb usability and visual appeal. I must say you’ve done a very good job with this.
    aws training in bangalore
    RPA Training in bangalore
    Python Training in bangalore
    Selenium Training in bangalore
    Hadoop Training in bangalore

    ReplyDelete